MariaDB 10.1.48 中的检查约束不起作用

MariaDB 10.1.48 中的检查约束不起作用

我有下表:

CREATE TABLE t1 (
    a INT, 
    b INT, 
    CONSTRAINT a_greater CHECK (a>b)
);

因此,a 必须大于 b。执行此插入时,它不应该起作用:

insert into t1(a,b) values (4,5);

我仍然能够运行该声明。

1

数据库的版本:10.1.48-MariaDB-0+deb9u2

我知道,我可以用触发器来实现这一点,但这太费力了,只是为了做 CHECK-Constraint 实际上应该做的事情。

是否存在错误,或者可能是由于配置错误导致的?什么原因导致了此行为?我该如何修复它?

答案1

MariaDB约束 章节中有这样的陈述:

在 MariaDB 10.2.1 之前,约束表达式在语法中被接受但被忽略。

您的 MariaDB 10.1.48 版本太早,因此 CONSTRAINT 子句在语法上经过验证,但在其他方面被忽略。

您需要升级 MariaDB,当前版本是 11.4.1从 2024 年 2 月开始。

相关内容