一尘不染

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

sql

我应该在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查询中执行它们两者?

我该如何解决?


阅读 107

收藏
2021-05-16

共1个答案

一尘不染

您有三个问题:

  1. ;在第二行代码的末尾使用来终止该语句。
  2. FOR MEMBER_ID在最后一个语句中可能应该是FOR Sys_date
  3. 您重复一遍,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 [ 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时间,由分离,

2021-05-16