Warum nicht SQL Server unterstützt nicht signierten Datentyp?
-
10-10-2019 - |
Frage
Ich denke speziell über unsigned int
.
Hier ist ein Beispiel aus der Praxis: Was tun Sie, wenn Ihre Identität Spalte maxes? Es ist möglich, entweder geht BigInt
(8 Byte Speicher statt 4) oder die Anwendung Refactoring negative ganze Zahlen zu unterstützen, und sogar Ihre eigenen Regeln zu schaffen, wie in diese Antwort ; keine dieser beiden Optionen sind optimal.
UInt
wäre eine ideale Lösung, aber SQL Server bietet es nicht (wo MySQL der Fall ist).
Ich verstehe, dass nicht signierte Datentypen sind nicht Teil der SQL-Standards (SQL-2003), scheinen aber immer noch wie eine Verschwendung zu mir.
Was ist der Grund nicht mit dieser (in SQL Server oder im Standard)?
Lösung
Wenn ich raten müsste, würde ich sagen, dass sie eine Verbreitung von Arten zu vermeiden versuchen. Generell gibt es nichts, dass eine ganze Zahl ohne Vorzeichen zu tun, dass eine Ganzzahl mit Vorzeichen nicht tun kann. Wie für den Fall, müssen Sie eine Zahl zwischen 2147483648 und 4294967296 Sie wahrscheinlich auf eine 8-Byte-Ganzzahl gehen sollten, da die Zahl auch schließlich 4294967296 überschreiten wird.
Andere Tipps
Zu diesem Zweck Sie -2.147.483.648 als Startwert verwendet werden kann.
Identity(-2147483648, 1)
fand ich eine ähnliche Frage auf Microsoft Connect.
Die Antwort von Jim Hogg (Program Manager) hat einige Vor-und Nachteile des für das Hinzufügen von unsigned int ist. Die wichtigsten con die Regeln ist implizite Typkonvertierungen ein Alptraum richtig zu machen geworden zu implementieren.
Der Antrag wurde geschlossen, wie "Werde nicht Fix".