这在SQL Server 2008中不起作用:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
错误是:
关键字“SET”附近的语法错误。
我做错了什么?
这在SQL Server 2008中不起作用:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
错误是:
关键字“SET”附近的语法错误。
我做错了什么?
当前回答
您可以使用以下语法,有关详细信息,请参阅此问题和答案:将具有默认值的列添加到SQL Server中的现有表中
语法:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
例子:
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.
另一种方法:
右键单击表并单击“设计”,然后单击要设置默认值的列。
然后在页面底部添加一个默认值或绑定:例如字符串为'1'或int为1。
其他回答
正确的做法如下:
执行如下命令: Sp_help[表名] 复制约束的名称。 删除默认约束: ALTER TABLE[表名]DROP[约束名] 运行如下命令: 修改表[表名]为[列名]添加默认值[默认值]
不能使用alter列,而是使用add列
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
第一次掉落约束
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)
第二步创建默认值
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
有两种情况可以更改列的默认值,
在创建表的时候 修改现有表的现有列。
在创建表/创建新列时。
查询
create table table_name
(
column_name datatype default 'any default value'
);
修改现有表的现有列
在这种情况下,我的SQL服务器不允许修改现有的默认约束值。因此,要更改默认值,我们需要删除现有的系统生成或用户生成的默认约束。之后,可以为特定列设置默认值。
遵循以下步骤:
列出列的所有现有默认值约束。
执行这个系统数据库过程,它以表名作为参数。它返回表中所有列的所有约束的列表。
execute [dbo].[sp_helpconstraint] 'table_name'
删除列的现有默认约束。
语法:
alter table 'table_name' drop constraint 'constraint_name'
为该列添加新的默认值约束:
语法:
alter table 'table_name' add default 'default_value' for 'column_name'
欢呼声@ ! !
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn