【问题标题】:Check constraint is violated even though the data is corresponding with it即使数据与之对应,也违反了检查约束
【发布时间】:2021-05-09 14:20:20
【问题描述】:

我刚刚开始学习 MySQL。所以我使用 datagrip 并用这个查询创建一个表:

CREATE TABLE customer
(
    customerid CHAR(5) NOT NULL,
    PRIMARY KEY (customerid),
    CONSTRAINT cekcustomerid CHECK ( customerid LIKE 'CU[0-9][0-9][0-9]')
);

然后我添加了数据

INSERT INTO customer
VALUE ('CU001');

[2021-05-09 21:10:28] [HY000][3819] Check constraint 'cekcustomerid' is violated.

我输入的数据与检查约束相对应。谁能告诉我我做错了什么?

【问题讨论】:

    标签: mysql datagrip


    【解决方案1】:

    您使用的 SQL Server 语法不适用于 MySql。

    在 MySql 中,[] 与运算符 LIKE 一起使用时不是通配符。

    你可以使用REGEXP:

    CREATE TABLE customer
    (
        customerid CHAR(5) NOT NULL,
        PRIMARY KEY (customerid),
        CONSTRAINT cekcustomerid CHECK (customerid REGEXP '^CU[0-9]{3}$')
    );
    

    请参阅demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      相关资源
      最近更新 更多