Domanda

Cercando di fare in modo che un'applicazione basata su MySQL supporti MS SQL, ho riscontrato il seguente problema:

Mantengo l'auto_increment di MySQL come campi interi senza segno (di varie dimensioni) per utilizzare l'intervallo completo, poiché so che non ci saranno mai valori negativi.MS SQL non supporta l'attributo unsigned su tutti i tipi interi, quindi devo scegliere tra abbandonare metà dell'intervallo di valori o creare una soluzione alternativa.

Un approccio molto ingenuo sarebbe quello di inserire del codice nel codice di astrazione del database o in una procedura memorizzata che converte tra valori negativi sul lato db e valori dalla porzione più ampia dell'intervallo senza segno.Ciò ovviamente rovinerebbe l'ordinamento e inoltre non funzionerebbe con la funzione di identificazione automatica (o lo farebbe in qualche modo?).

Non riesco a pensare a un Bene soluzione alternativa adesso, ce n'è qualche?O sono solo un fanatico e dovrei semplicemente dimenticarmi di metà del range?

Modificare:
@Mike Woodhouse:Sì, immagino che tu abbia ragione.C'è ancora una voce nella mia testa che dice che forse potrei ridurre le dimensioni del campo se ne ottimizzo l'utilizzo.Ma se non esiste un modo semplice per farlo, probabilmente non vale la pena preoccuparsene.

È stato utile?

Soluzione

Quando è probabile che il problema diventi un vero problema?

Dati gli attuali tassi di crescita, quanto tempo prevedi che si verifichi un overflow di numeri interi con segno nella versione MS SQL?

Essere pessimisti.

Quanto tempo ti aspetti che l'applicazione viva?

Pensi ancora che la differenza del fattore 2 sia qualcosa di cui dovresti preoccuparti?

(Non ho idea di quali siano le risposte, ma penso che dovremmo essere sicuri di avere davvero un problema prima di cercare più duramente una soluzione)

Altri suggerimenti

Consiglierei di utilizzare il tipo di dati BIGINT poiché arriva fino a 9.223.372.036.854.775.807.

SQL Server non supporta valori con segno e senza segno.

direi questo.."Come gestiamo normalmente le differenze tra i componenti?"

Incapsula ciò che varia..

È necessario creare un livello di astrazione all'interno del livello di accesso ai dati per portarlo al punto in cui si trova non importa se il database è MySQL o MS SQL..

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