我应该修改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;
以上说法不起作用,它说:
Msg 156,Level 15,State 1,Line 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查询中执行它们?
我该如何解决这个问题?
答案 0 :(得分:10)
你有三个问题:
;
终止声明。FOR MEMBER_ID
,该语句应该是FOR Sys_date
。ADD
但don't have to。假设这个表结构:
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;
请参阅this sqlfiddle。
你 理论上也会在MSDN's page on 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
次之间的位,用,
分隔。< / p>
答案 1 :(得分:-1)
ALTER TABLE MEMBER ADD CONSTRAINT U_MEMBERID UNIQUE(MEMBER_ID), primary key (MEMBER_ID);
ALTER TABLE MEMBER ADD CONSTRAINT Sys_date DEFAULT GETDATE() FOR MEMBER_ID;