2012-02-17 16 views
8

Ho la seguente istruzione in SQL Server:SQL Server: ALTER con ADD nuova colonna

ALTER TABLE [dbo].[TruckTbl] 
ADD [TruckState] [bit] NULL DEFAULT 0; 

Che cosa farà è quello di come posso difetto qualsiasi nuovo record a 0.

Per i record esistenti ottenere e dire nella dichiarazione anche quelli predefiniti a 0.

So che posso andare a fare un aggiornamento, ma comunque a fare all'interno di un aggiornamento nella dichiarazione ALTER sopra?

+0

caso in cui il campo di bit * veramente * essere annullabile? Questo fondamentalmente lo rende un tristato piuttosto che un bistato. Se quel campo non ha consentito null, tutti i record precedenti riceverebbero il tuo valore predefinito prescritto! – Jamiec

risposta

18

Utilizzare la WITH VALUES clausola di

ALTER TABLE [dbo].[TruckTbl] ADD [TruckState] [bit] NULL DEFAULT 0 WITH VALUES; 

Anche se sono d'accordo con l'altra risposta sembra strano che la colonna dovrebbe essere annullabile affatto se si impostano tutte le righe esistenti per 0 e hanno un valore predefinito per gli inserti future . Hai mai avuto bisogno di consentire NULL come valore di colonna qui?

+2

Fresco, non ho mai saputo * che * esistesse. – Jamiec

0
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} 
[WITH VALUES] 

es

ALTER TABLE Temp 
ADD ID int NOT NULL DEFAULT(1) 
+0

Aggiungi commenti perché lo hai downvotato. –

Problemi correlati