【问题标题】:SQL- error when creating table with check constraint使用检查约束创建表时出现 SQL 错误
【发布时间】:2018-04-01 11:00:32
【问题描述】:

尝试使用 sql 创建表,但收到错误“A symbol name is expected! A reserved keyword can't be used as a column name without backquotes”。

Create TABLE Tour (  
    Tour_ID int AUTO_INCREMENT,  
    Tour_Title VARCHAR(15) Not NULL,  
    Cost decimal(4,2) DEFAULT '2000.00',   
    CONSTRAINT tour_pk PRIMARY KEY (Tour_ID),  
    CONSTRAINT Ck_cost CHECK Cost BETWEEN 1500 and 2500  
    );

错误出现在 CHECK 语句中,所以我不知道为什么会显示保留关键字的错误。到处找,希望不要问愚蠢的问题。

【问题讨论】:

  • MySQL 还不支持检查约束。然而奇怪的是,它可以让你把它们放进去。不要这样做,而是使用触发器。
  • 副本不准确。 OP 询问的是语法,而不是检查约束本身不起作用的原因。

标签: mysql sql


【解决方案1】:

MySQL 没有实现check 约束,因此没有包含它们的实用程序。但是,它应该正确解析它们。

我认为你缺少括号:

Create TABLE Tour (  
    Tour_ID int AUTO_INCREMENT,  
    Tour_Title VARCHAR(15) Not NULL,  
    Cost decimal(4,2) DEFAULT '2000.00',   
    CONSTRAINT tour_pk PRIMARY KEY (Tour_ID),  
    CONSTRAINT Ck_cost CHECK (Cost BETWEEN 1500 and 2500) 
);

我要强调的是,如果你真的想实现检查,你需要在你的应用程序中或者使用触发器来实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多