是否有MySQL / MariaDB的引擎强制执行CHECK?

时间:2015-02-05 13:51:35

标签: mysql sql mariadb

我知道InnoDB强制执行外键。是否有MySQL / MariaDB的引擎真正实现了CHECK?

假设我使用以下命令创建一个表:

create table a(t timestamp not null, check (t > '2014-05-01')) ENGINE=InnoDB;

我尝试插入一个假设无效的行:

insert into a(t) values('2014-01-01');

使用InnoDB的MySQL允许插入该无效行。我想使用一个不接受插入的引擎。那个工作有引擎吗?

2 个答案:

答案 0 :(得分:1)

MySQL中没有这样的引擎。如果必须在数据库级别进行检查,则唯一的选择是使用触发器并在那里验证数据。

也许有一天会: http://bugs.mysql.com/bug.php?id=3464

答案 1 :(得分:1)

CHECK约束在MariaDB 10.2中按预期工作,目前是测试版。 https://jira.mariadb.org/browse/MDEV-7563