2012-02-17 15 views
8

tengo la siguiente declaración en SQL Server:SQL Server: Alter con ADD nueva columna

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

Lo que esto hará es la forma por defecto cualquier registro a 0. NUEVO

Para los registros existentes que pueden obtener y decir en la declaración también por defecto a 0.

Sé que puedo ir y hacer una actualización, pero de todos modos hacer dentro de una actualización en la declaración anterior ALTER?

+0

Si su campo de bits * * realmente ser anulable? Esto básicamente lo convierte en un estado tristatario en lugar de biestado. Si ese campo no permitiera nulos, todos los registros anteriores recibirían su valor predeterminado prescrito. – Jamiec

Respuesta

18

Utilice la WITH VALUES cláusula

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

Aunque estoy de acuerdo con la otra respuesta parece extraño que la columna debe ser anulable en absoluto si va a configurar todas las filas existentes para 0 y tienen un valor predeterminado para futuras inserciones . ¿Alguna vez necesita permitir NULL como valor de columna aquí?

+2

Genial, nunca supo * que * existió. – Jamiec

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

por ejemplo

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

Agregue comentarios por qué lo rechazó. –

Cuestiones relacionadas