【问题标题】:Unable to add check constraint to a column无法向列添加检查约束
【发布时间】:2018-03-26 14:49:51
【问题描述】:

我正在尝试创建一个包含几列的简单表格。我想为其中一列添加一个检查约束,见下文:

create table jobs (
    JOB_ID varchar(10) not null,
    JOB_TITLE varchar(35) not null,
    MIN_SALARY decimal(6,0),
    MAX_SALARY decimal(6,0) 
    CHECK(MAX_SALARY<=25000)
    );

这将返回CHECK 行的错误。

应使用逗号或右括号。 (靠近CHECK)

如果我在上一行添加一个逗号; MAX_SALARY decimal(6,0),,我返回了更多错误:

需要一个符号名称!保留关键字不能用作没有反引号的列名。

MAX_SALARY 附近语句的意外开头

25000 附近语句的意外开头

【问题讨论】:

  • 您的数据库服务器是??
  • @Hackit 我是新手,所以我不太确定术语。但我正在通过 xampp 运行 phpMyAdmin
  • 好的,它MYSQL !!
  • sql CHECK constraint not working properly 可能重复 MySQL 不支持检查约束!
  • 首先创建简单表,然后使用 Alter 尝试添加检查,如更新我的答案!

标签: mysql phpmyadmin


【解决方案1】:

更新:

只需创建没有 CHECK 的表,然后修改它:

  create table jobs (
    JOB_ID varchar(10) not null,
    JOB_TITLE varchar(35) not null,
    MIN_SALARY decimal(6,0),
    MAX_SALARY decimal(6,0)
    );

ALTER TABLE jobs ADD CHECK (MAX_SALARY<=25000);


在 MySQL 中:

create table jobs (
    JOB_ID varchar(10) not null,
    JOB_TITLE varchar(35) not null,
    MIN_SALARY decimal(6,0),
    MAX_SALARY decimal(6,0), 
    CHECK(MAX_SALARY<=25000)    
    );

SQL Server / Oracle

 create table jobs (
    JOB_ID varchar(10) not null,
    JOB_TITLE varchar(35) not null,
    MIN_SALARY decimal(6,0),
    MAX_SALARY decimal(6,0) CHECK(MAX_SALARY<=25000)

    );

注意: MySQL 不支持 CHECK 约束,但您可以使用它,正如我声明的那样,但它不会给您输出!!

【讨论】:

  • 所有这些例子都给我带来了类似的错误。
  • @AugustWilliams 你可以尝试使用 Alter 表吗?
  • CHECKADD 冲突
  • @AugustWilliams 它完全在我的本地工作!!
猜你喜欢
  • 2018-01-04
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多