Create Table
我认为这里的问题是和Alter 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 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
因此,您必须为 Altering 列编写两个不同的语句:
ALTER TABLE MyTable ALTER COLUMN CreateDate DATETIME NOT NULL;
另一个用于更改表并添加默认约束
ALTER TABLE MyTable ADD CONSTRAINT DF_Constraint DEFAULT GetDate() FOR CreateDate;
希望这可以帮助!!!