Esto no funciona 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?
Esto no funciona 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?
Respuestas:
Esto funcionará en SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
no puede usar la columna alter para eso, use add en su lugar
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
La forma correcta de hacer esto es la siguiente:
Ejecute el comando:
sp_help [table name]
Copie el nombre de la CONSTRAINT
.
Suelta el DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Ejecute el comando a continuación:
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 volviera a ejecutar y encontré esta forma de 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
Hay dos escenarios en los que se puede cambiar el valor predeterminado de una columna,
Consulta
create table table_name
(
column_name datatype default 'any default value'
);
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 sistema existente o generada por el usuario. Y después de ese valor predeterminado se puede establecer para una columna en particular.
Sigue algunos pasos:
Ejecute este procedimiento de base de datos del sistema, toma el nombre de la tabla como parámetro. Devuelve la lista de todas las restricciones para todas las columnas dentro de la tabla.
execute [dbo].[sp_helpconstraint] 'table_name'
Sintaxis:
alter table 'table_name' drop constraint 'constraint_name'
Sintaxis:
alter table 'table_name' add default 'default_value' for 'column_name'
salud @!!!
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;
Puede usar la siguiente sintaxis. Para obtener más información, consulte esta pregunta y sus respuestas: Agregue una columna con un valor predeterminado a una tabla existente en SQL Server
Sintaxis:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Ejemplo:
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
De otra manera :
Haga clic derecho en la tabla y haga clic en Diseño, luego haga clic en la columna que desea establecer el valor predeterminado.
Luego, en la parte inferior de la página, agregue un valor predeterminado o enlace: algo como '1' para la cadena o 1 para int.
Acabo de encontrar 3 pasos simples para modificar la 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
Primera caída de restricciones
https://stackoverflow.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 predeterminado
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Intenta seguir el comando;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Al igual que la respuesta de Yuck con un cheque para permitir que el script se ejecute más de una vez sin error. (menos código / cadenas personalizadas que usar 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