这在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”附近的语法错误。
我做错了什么?
当前回答
ALTER TABLE tblUser
ADD CONSTRAINT DF_User_CreatedON DEFAULT GETDATE() FOR CreatedOn
其他回答
试试下面的命令;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
就像Yuck的答案,检查允许脚本运行多次而没有错误。(与使用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
有两种情况可以更改列的默认值,
在创建表的时候 修改现有表的现有列。
在创建表/创建新列时。
查询
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'
欢呼声@ ! !
如果一个限制已经存在,它的默认名称是:
-- 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;
刚刚发现3个简单的步骤来改变已经存在的列,之前是空的
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