这在SQL Server 2008中不起作用:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
错误是:
关键字“ SET”附近的语法不正确。
我究竟做错了什么?
#1楼
ALTER TABLE [dbo].[Employee] ADD DEFAULT ('N') FOR [CityBorn]
#2楼
尝试执行以下命令;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
#3楼
正确的方法如下:
运行命令:sp_help [table name]
复制CONSTRAINT的名称。
删除DEFAULT CONSTRAINT :ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
运行以下命令:ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
#4楼
在两种情况下,可以更改列的默认值,
创建表时
修改现有表的现有列。
在创建表/创建新列时。
询问
create table table_name
(
column_name datatype default 'any default value'
);
修改现有表的现有列
在这种情况下,我的SQL Server不允许修改现有的默认约束值。 因此,要更改默认值,我们需要删除现有的系统生成或用户生成的默认约束。 之后,可以为特定列设置默认值。
请遵循以下步骤:
列出列的所有现有默认值约束。
执行此系统数据库过程,它将表名作为参数。 它返回表中所有列的所有约束的列表。
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'
欢呼@ !!!
#5楼
Hoodaticus的解决方案是完美的,谢谢,但是我还需要重新运行它,并找到这种方式来检查它是否已经完成...
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