Domanda

Sono in particolare pensando int senza segno.

Ecco un esempio pratico: cosa fate quando la vostra colonna di identità arriva al massimo? E 'possibile andare sia BigInt (8 byte di archiviazione invece di 4) o il refactoring dell'applicazione per sostenere interi negativi, e anche per creare le proprie regole, come indicato in questa risposta ; nessuna di queste opzioni sono ottimali.

UInt sarebbe una soluzione ideale, ma SQL Server non offrirlo (in cui MySQL fa).

capisco che i tipi di dati non firmati non fanno parte dello standard SQL (SQL-2003), ma sembra ancora come uno spreco per me.

Qual è la ragione di non includere queste (in SQL Server o nello standard)?

È stato utile?

Soluzione

Se dovessi indovinare, direi che essi stanno cercando di evitare una proliferazione di tipi. In generale non c'è nulla che un intero senza segno può fare un intero con segno non può fare. Per quanto riguarda il caso in cui avete bisogno di un numero compreso tra 2147483648 e 4294967296 probabilmente dovreste andare a un numero intero di 8 byte dal momento che il numero sarà anche finisce per superare 4294967296.

Altri suggerimenti

A tale scopo è possibile utilizzare -2.147.483.648 come il valore di inizializzazione.

Identity(-2147483648, 1)

Ho trovato una domanda simile su Microsoft Connect.

La risposta di Jim Hogg (Program Manager) ha alcuni pro ei contro di per l'aggiunta di unsigned int. Il principale neo è la modalità di applicazione di tipo conversioni implicite diventano un incubo per ottenere di destra.

La richiesta è stata chiusa come "Will not Fix".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top