Question

Je pense en particulier à int non signé.

Voici un exemple concret: que faites-vous lorsque votre colonne d'identité maxes? Il est possible soit BigInt go (8 octets de stockage au lieu de 4) ou refactorisons l'application pour supporter les entiers négatifs, et même de créer vos propres règles comme indiqué dans cette réponse ; aucune de ces options sont optimales.

UInt serait une solution idéale, mais SQL Server ne propose pas (où MySQL fait).

Je comprends que non signés ne sont pas datatypes partie de la norme SQL (SQL-2003), mais semble encore comme une perte pour moi.

Quelle est la raison de ne pas inclure ces (dans SQL Server ou dans la norme)?

Était-ce utile?

La solution

Si je devais deviner, je dirais qu'ils essaient d'éviter une prolifération de types. D'une manière générale il n'y a rien qu'un entier non signé peut faire un entier signé ne peut pas faire. En ce qui concerne le cas où vous avez besoin d'un numéro entre 2147483648 et 4294967296, vous devriez probablement aller à un nombre entier de 8 octets puisque le nombre sera aussi finira par dépasser 4.294.967.296.

Autres conseils

Pour ce faire, vous pouvez utiliser -2147483648 comme la valeur de départ.

Identity(-2147483648, 1)

J'ai trouvé une question similaire sur Microsoft Connect.

La réponse de Jim Hogg (gestionnaire de programme) a des avantages et inconvénients pour l'ajout de unsigned int. Le principal est con les règles à mettre en œuvre les conversions de type implicites deviennent un cauchemar pour obtenir le droit.

La demande a été fermée comme "Will not fix".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top