我知道您可以更改现有列的默认值,如
this:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDnes' FOR CityBorn;
ALTER TABLE MyTable ALTER COLUMN CreateDate DATETIME NOT NULL CONSTRAINT DF_Constraint DEFAULT GetDate()
解决方法
我认为这里的问题是Create Table和Alter Table命令之间的混淆.
如果我们查看Create table,那么我们可以在同一时间添加默认值和默认约束:
如果我们查看Create table,那么我们可以在同一时间添加默认值和默认约束:
<column_deFinition> ::= column_name <data_type> [ FILESTREAM ] [ COLLATE collation_name ] [ SPARSE ] [ NULL | NOT NULL ] [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] | [ IDENTITY [ ( seed,increment ) ] [ NOT FOR REPLICATION ] ] [ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ] [ <column_index> ] ex: CREATE TABLE dbo.Employee ( CreateDate datetime NOT NULL CONSTRAINT DF_Constraint DEFAULT (getdate()) ) ON PRIMARY;
您可以在这里查看完整的定义:
http://msdn.microsoft.com/en-IN/library/ms174979.aspx
但是如果我们再看ALTER TABLE ALTER COLUMN,那么您不能添加
CONSTRAINT可用于ADD的选项有:
| ADD { <column_deFinition> | <computed_column_deFinition> | <table_constraint> | <column_set_deFinition> } [,...n ]
请在这里查看:http://msdn.microsoft.com/en-in/library/ms190273.aspx
所以你必须编写两个不同的语句,用于改变列:
ALTER TABLE MyTable ALTER COLUMN CreateDate DATETIME NOT NULL;
ALTER TABLE MyTable ADD CONSTRAINT DF_Constraint DEFAULT GetDate()FOR CreateDate;
希望这可以帮助!!!