Tôi nghĩ vấn đề ở đây là với sự nhầm lẫn giữa Create Table
và Alter Table
lệnh. Nếu chúng ta nhìn vào Create table
sau đó chúng ta có thể thêm một giá trị mặc định và hạn chế mặc định cùng lúc như:
<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;
bạn có thể kiểm tra các định nghĩa đầy đủ ở đây: http://msdn.microsoft.com/en-IN/library/ms174979.aspx
nhưng nếu chúng ta nhìn vào định nghĩa Alter Table
sau đó với ALTER TABLE ALTER COLUMN
bạn không thể thêm CONSTRAINT
các tùy chọn có sẵn cho ADD
là:
| ADD
{
<column_definition>
| <computed_column_definition>
| <table_constraint>
| <column_set_definition>
} [ ,...n ]
Kiểm tra ở đây: http://msdn.microsoft.com/en-in/library/ms190273.aspx
Vì vậy, bạn sẽ phải viết hai câu lệnh khác nhau một cho Thay đổi cột như:
ALTER TABLE MyTable ALTER COLUMN CreateDate DATETIME NOT NULL;
và một cho việc thay đổi bảng và thêm một hạn chế mặc định
ALTER TABLE MyTable ADD CONSTRAINT DF_Constraint DEFAULT GetDate() FOR CreateDate;
Hy vọng điều này sẽ giúp !!!
Tôi nghĩ bạn cần 'THÊM TẠO TẠO', như trong ví dụ đầu tiên của bạn. – Andrew