valor una tabla nombre modificar eliminar como columna campo cambiar alterar agregar sql-server alter-table notnull

sql server - nombre - inserte una columna NOT NULL en una tabla existente



como eliminar un campo de una tabla en sql (6)

Como opción, puede crear inicialmente una columna con capacidad nula, luego actualizar la columna de su tabla con valores válidos no nulos y, finalmente, ALTERAR la columna para establecer la restricción NOT NULL:

ALTER TABLE MY_TABLE ADD STAGE INT NULL GO UPDATE MY_TABLE SET <a valid not null values for your column> GO ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL GO

Otra opción es especificar el valor predeterminado correcto para su columna:

ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT ''0''

UPD: tenga en cuenta que la respuesta anterior contiene GO que es imprescindible cuando ejecuta este código en el servidor Microsoft SQL. Si desea realizar la misma operación en Oracle o MySQL, necesita usar punto ; coma ; como eso:

ALTER TABLE MY_TABLE ADD STAGE INT NULL; UPDATE MY_TABLE SET <a valid not null values for your column>; ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;

Yo he tratado:

ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL;

Pero da este mensaje de error:

ALTER TABLE solo permite añadir columnas que pueden contener nulos o tener una definición DEFAULT especificada


El mensaje de error es bastante descriptivo, prueba:

ALTER TABLE MyTable ADD Stage INT NOT NULL DEFAULT ''-'';


Esto funcionó para mí, también se puede "tomar prestado" de la vista de diseño, hacer cambios -> clic derecho -> generar secuencia de comandos de cambio.

BEGIN TRANSACTION GO ALTER TABLE dbo.YOURTABLE ADD YOURCOLUMN bit NOT NULL CONSTRAINT DF_YOURTABLE_YOURCOLUMN DEFAULT 0 GO COMMIT


Si no permite que la columna sea nula, debe proporcionar un valor predeterminado para completar las filas existentes. p.ej

ALTER TABLE dbo.YourTbl ADD newcol int NOT NULL CONSTRAINT DF_YourTbl_newcol DEFAULT 0

En Enterprise Edition, este es un cambio solo de metadatos desde 2012


Otras implementaciones de SQL tienen restricciones similares. La razón es que agregar una columna requiere agregar valores para esa columna (lógicamente, incluso si no físicamente), que por defecto es NULL . Si no permite NULL y no tiene un default , ¿cuál será el valor?

Dado que SQL Server es compatible con ADD CONSTRAINT , recomendaría el enfoque de Pavel de crear una columna que pueda contener nulos y luego agregar una restricción NOT NULL después de haberla completado con valores que no sean NULL .


ALTER TABLE `MY_TABLE` ADD COLUMN `STAGE` INTEGER UNSIGNED NOT NULL AFTER `PREV_COLUMN`;