valor una tabla por modificar insertar entre eliminar defecto con como columnas columna campos campo alterar agregar sql sql-server database

por - ¿Agregar columnas que no admiten nulos a una tabla existente en el servidor SQL?



insertar campos en una tabla sql (3)

Ya tengo una tabla que consiste en datos. Necesito modificar la tabla para agregar dos columnas nuevas que no son nulas. ¿Cómo puedo hacer eso sin perder ningún dato existente?

Esto es lo que probé (haciendo clic con el botón derecho en la tabla y seleccionando Diseño):

  1. Se agregaron columnas nuevas ''EmpFlag'' (bit, null), ''CreatedDate'' (datetime, null)

  2. Se actualizó la columna ''EmpFlag'' en la tabla, para tener algunos valores válidos. (Solo quería trabajar en un campo, así que no actualicé el campo ''CreatedDate'')

  3. Ahora haga clic en la tabla, diseñe y haga que no sea nulo.

Cuando intenté guardar, apareció este mensaje de error:

Guardar cambios no está permitido. Los cambios que ha realizado requieren que se eliminen y vuelvan a crear las siguientes tablas .


Agregar nuevas columnas NOT NULL con valores predeterminados se puede hacer en la GUI como a continuación. Cambiar una existente a NOT NULL parece ser una historia diferente. Recibo el mismo mensaje que tuviste. Una opción sería crear una nueva columna NOT NULL con un valor predeterminado para reemplazar la columna anterior y luego copiar los datos de la columna anterior a los nuevos datos de la columna.

  1. Coloque la tabla en la Vista de diseño (haga clic con el botón derecho en la tabla-> seleccione Diseño )
  2. Agregar columna, seleccionar tipo de datos
  3. Desmarque Permitir valores nulos y establezca Valor predeterminado o Enlace = sus valores predeterminados como a continuación


Si no desea establecer un valor predeterminado en las columnas, puede:

  1. crea las nuevas columnas como NULLable
  2. ACTUALIZAR los datos existentes apropiadamente
  3. agregue la restricción NOT NULL

Simplemente establece un valor predeterminado en las nuevas columnas y eso le permitirá agregarlas.

alter table table_name add column_name datetime not null constraint DF_Default_Object_Name default (getdate())

o este para un campo varchar.

alter table table_name add column_name varchar(10) not null constraint DF_Default_Object_Name default (''A'')

También puede soltar el valor predeterminado si no lo necesita después de agregar la columna.

alter table table_name drop constraint DF_Default_Object_Name