在一个语句中添加多个约束

时间:2014-07-06 05:51:49

标签: sql sql-server sql-server-2012 constraints

我应该修改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查询中执行它们?

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:10)

你有三个问题:

  1. 您使用第二行代码末尾的;终止声明。
  2. 您在最后一个语句中有FOR MEMBER_ID,该语句应该是FOR Sys_date
  3. 您重复ADDdon't have to
  4. 假设这个表结构:

    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;