Я думаю, что проблема здесь с путаницей между 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
Таким образом, вы должны написать два разных заявления один за Изменяя колонку, как:
ALTER TABLE MyTable ALTER COLUMN CreateDate DATETIME NOT NULL;
и другой для изменения таблицы и добавить ограничение, по умолчанию
ALTER TABLE MyTable ADD CONSTRAINT DF_Constraint DEFAULT GetDate() FOR CreateDate;
Надеюсь, что это поможет !!!
Я думаю, вам нужно 'ADD CONSTRAINT', как в вашем первом примере. – Andrew