即使数据与之对应,也违反了检查约束

Posted

技术标签:

【中文标题】即使数据与之对应,也违反了检查约束【英文标题】: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.

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

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于即使数据与之对应,也违反了检查约束的主要内容,如果未能解决你的问题,请参考以下文章

在持久化实体之前检查是不是违反约束

“ORA-00001:违反了唯一约束”,即使使用异常

违反完整性约束:1062空数据库LARAVEL上的重复条目

oracle报错 ORA-02290: 违反检查约束条件问题

在导入Oracle数据库的时候违反唯一约束条件是为啥?要怎么解决?

Oracle数据库中违反唯一约束的处理