2010-12-17 28 views

Respuesta

14

elegir entre:

a) Crear no es nulo con un valor predeterminado válido
b) Crear nula, llenarlo, alterar a no nula

0
IF NOT EXISTS (SELECT 1 
FROM syscolumns sc 
JOIN sysobjects so 
ON sc.id = so.id 
WHERE so.Name = 'Table1' 
AND sc.Name = 'Col1') 
BEGIN 
ALTER TABLE Table1 
ADD Col1 INT NOT NULL DEFAULT 0; 
END 
GO 
+1

Esto no funcionará en la tabla ya existente. – zerkms

+2

ALTER TABLE solo permite agregar columnas que pueden contener nulos o tener una definición DEFAULT especificada, o la columna que se agrega es una columna de identidad o marca de tiempo, o alternativamente si no se cumple ninguna de las condiciones previas, la tabla debe estar vacía para permitir Además de esta columna. La columna 'Val' no se puede agregar a la tabla no vacía '#Test' porque no cumple estas condiciones. –

+0

mi error ... He corregido mi consulta ahora ... –

55

Se le puede especificar un DEFAULT o agregue la columna con valores NULL permitidos, actualice todos los valores y luego cambie la columna a NOT NULL.

ALTER TABLE <YourTable> 
ADD <NewColumn> <NewColumnType> NOT NULL DEFAULT <DefaultValue> 
2

Hay dos formas de añadir las columnas no NULL de la tabla:

  1. alterar la tabla añadiendo la columna con limitación NULL. Llena la columna con algunos datos. Ej .: la columna se puede actualizar con ''

  2. ALTERA la tabla agregando la columna con la restricción NOT NULL dando valores DEFAULT. tabla ALTER TABLENAME ADD NewColumn tipo de datos predeterminado NOT NULL ''

0

La forma más sencilla de hacerlo es:

ALTER TABLE db.TABLENAME ADD COLUMN [datatype] NOT NULL DEFAULT 'value' 

Ex: Adición de una columna x (tipo de datos bit) a una tabla de ABC con valor predeterminado 0

ALTER TABLE db.ABC ADD COLUMN x bit NOT NULL DEFAULT 0 

PD: No soy un gran admirador de usar el diseñador de mesas para esto. Es mucho más fácil ser convencional/pasado de moda a veces. :). Espero que esto ayude a responder

Cuestiones relacionadas