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

use*_*754 7 sql sql-server constraints sql-server-2012

我应该修改我在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;
Run Code Online (Sandbox Code Playgroud)

以上不起作用,它说:

消息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';
Run Code Online (Sandbox Code Playgroud)

另外:是否可以将上面的代码添加到它之前的代码中并在同一个sql查询中执行它们?

我该如何解决?

Jer*_*oen 12

你有三个问题:

  1. 使用;第二行代码末尾的语句终止语句.
  2. 你有FOR MEMBER_ID最后一个声明,应该是FOR Sys_date.
  3. 你重复,ADD不必.

假设这个表结构:

CREATE TABLE Member (MEMBER_ID BIGINT NOT NULL, Sys_date DATETIME);
Run Code Online (Sandbox Code Playgroud)

这个DDL将起作用:

ALTER TABLE MEMBER
ADD CONSTRAINT U_MEMBERID UNIQUE(MEMBER_ID), primary key (MEMBER_ID),
    CONSTRAINT Sys_date DEFAULT GETDATE() FOR Sys_date;
Run Code Online (Sandbox Code Playgroud)

看到这个sqlfiddle.

理论上你也可以MSDN的页面上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....
Run Code Online (Sandbox Code Playgroud)

ADD关键字出现一次,该} [ ,...n ]位告诉您可以重复{bracket} n次之间的位,用a分隔,.