valor una tabla quitar por modificar definir defecto como columna campo asignar alterar sql-server sql-server-2008 tsql default-value

sql server - tabla - Cómo establecer un valor predeterminado para una columna existente



modificar valor por defecto de una columna sql (12)

Esto no está funcionando en SQL Server 2008:

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT ''SANDNES''

El error es:

Sintaxis incorrecta cerca de la palabra clave ''SET''.

¿Qué estoy haciendo mal?


Acaba de encontrar 3 pasos simples para modificar una columna ya existente que antes era nula

update orders set BasicHours=0 where BasicHours is null alter table orders add default(0) for BasicHours alter table orders alter column CleanBasicHours decimal(7,2) not null


Al igual que la respuesta de Yuck con una comprobación para permitir que el script se ejecute más de una vez sin error. (menos código / cadenas personalizadas que utilizando information_schema.columns)

IF object_id(''DF_SomeName'', ''D'') IS NULL BEGIN Print ''Creating Constraint DF_SomeName'' ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N''SANDNES'' FOR CityBorn; END


En caso de que ya exista una restricción con su nombre predeterminado:

-- Drop existing default constraint on Employee.CityBorn DECLARE @default_name varchar(256); SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID(''Employee'') AND COL_NAME(parent_object_id, parent_column_id)=''CityBorn''; EXEC(''ALTER TABLE Employee DROP CONSTRAINT '' + @default_name); -- Add default constraint on Employee.CityBorn ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT ''SANDNES'' FOR CityBorn;


Esto funcionará en SQL Server:

ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N''SANDNES'' FOR CityBorn;


Hay dos escenarios donde se puede cambiar el valor predeterminado para una columna,

  1. A la hora de crear mesa.
  2. Modificar columna existente para una tabla existente.
  1. En el momento de crear tabla / crear nueva columna.

Consulta

create table table_name ( column_name datatype default ''any default value'' );

  1. Modificar columna existente para una tabla existente

En este caso, mi servidor SQL no permite modificar el valor de restricción predeterminado existente. Por lo tanto, para cambiar el valor predeterminado, necesitamos eliminar la restricción predeterminada generada por el usuario o el sistema existente. Y después de ese valor predeterminado se puede establecer para una columna en particular.

Siga algunos pasos:

  1. Listar todas las restricciones de valor por defecto existentes para las columnas.

Ejecute este procedimiento de la base de datos del sistema, toma el nombre de la tabla como un parámetro. Devuelve la lista de todas las restricciones para todas las columnas dentro de la tabla.

execute [dbo].[sp_helpconstraint] ''table_name''

  1. Eliminar la restricción predeterminada existente para una columna.

Sintaxis:

alter table ''table_name'' drop constraint ''constraint_name''

  1. Agregar nueva restricción de valor por defecto para esa columna:

Sintaxis:

alter table ''table_name'' add default ''default_value'' for ''column_name''

saludos @ !!!


Intenta seguir el comando;

ALTER TABLE Person11 ADD CONSTRAINT col_1_def DEFAULT ''This is not NULL'' FOR Address


La forma correcta de hacerlo es la siguiente:

  1. Ejecuta el comando:

    sp_help [table name]

  2. Copia el nombre del CONSTRAINT .

  3. Suelte la DEFAULT CONSTRAINT :

    ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]

  4. Ejecute el siguiente comando:

    ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]


La solución de Hoodaticus fue perfecta, gracias, pero también necesitaba que se pudiera volver a ejecutar y encontré esta manera para verificar si se había hecho ...

IF EXISTS(SELECT * FROM information_schema.columns WHERE table_name=''myTable'' AND column_name=''myColumn'' AND Table_schema=''myDBO'' AND column_default IS NULL) BEGIN ALTER TABLE [myDBO].[myTable] ADD DEFAULT 0 FOR [myColumn] --Hoodaticus END


Restricciones de primera caída

https://.com/a/49393045/2547164

DECLARE @ConstraintName nvarchar(200) SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS WHERE PARENT_OBJECT_ID = OBJECT_ID(''__TableName__'') AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns WHERE NAME = N''__ColumnName__'' AND object_id = OBJECT_ID(N''__TableName__'')) IF @ConstraintName IS NOT NULL EXEC(''ALTER TABLE __TableName__ DROP CONSTRAINT '' + @ConstraintName)

Segundo crear valor por defecto

ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]


no se puede usar alterar columna para eso, usa agregar en su lugar

ALTER TABLE Employee ADD DEFAULT(''SANDNES'') FOR CityBorn


ALTER TABLE Employee ADD DEFAULT ''SANDNES'' FOR CityBorn


ALTER TABLE [dbo].[Employee] ADD DEFAULT (''N'') FOR [CityBorn]