我应该在Microsoft SQL Server 2012中修改当前名为MEMBER的表。
我正在尝试修改表格
ALTER TABLE MEMBER ADD CONSTRAINT U_MEMBERID UNIQUE(MEMBER_ID), primary key (MEMBER_ID); ADD CONSTRAINT Sys_date DEFAULT GETDATE() FOR MEMBER_ID;
上面的方法不起作用,它说:
消息156,级别15,状态1,第3行 关键字“ CONSTRAINT”附近的语法错误。
我认为我做错了什么,但是我不确定这是什么。
ALTER TABLE TITLE ADD CONSTRAINT U_TITLEID UNIQUE(TITLE_ID), primary key (TITLE_ID); add constraint C_CATEGORY CHECK(CATEGORY='DRAMA' OR 'COMEDY' OR 'ACTION' OR 'CHILD' OR 'SCIFI' OR 'DOCUMENTARY';
另外:是否可以将上述代码添加到其前面的代码中,并在同一个sql查询中执行它们两者?
我该如何解决?
您有三个问题:
;
FOR MEMBER_ID
FOR Sys_date
ADD
假设此表结构为:
CREATE TABLE Member (MEMBER_ID BIGINT NOT NULL, Sys_date DATETIME);
此DDL将起作用:
ALTER TABLE MEMBER ADD CONSTRAINT U_MEMBERID UNIQUE(MEMBER_ID), primary key (MEMBER_ID), CONSTRAINT Sys_date DEFAULT GETDATE() FOR Sys_date;
参见此sqlfiddle。
从理论上讲,您 也可以 在MSDN的页面上ALTER TABLE看到这一点,尽管我很容易承认这些规范可能很难阅读。这是他们对其解释的一种刺探:
ALTER TABLE
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name { ALTER COLUMN column_name -- Omitted.... | ADD { <column_definition> | <computed_column_definition> | <table_constraint> | <column_set_definition> } [ ,...n ] -- Omitted....
该ADD关键字出现一次,而} [ ,...n ]位告诉你,你可以重复{括号}位n时间,由分离,。
} [ ,...n ]
n
,