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

Is there an engine for MySQL/MariaDB that enforces CHECK?

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

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

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

然后我尝试插入一个假定无效的行:

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

MySQL,使用 InnoDB,允许插入该无效行。我想使用不接受该插入的引擎。有适合这项工作的引擎吗?

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

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

CHECK 约束在目前处于测试阶段的 MariaDB 10.2 中按预期工作。 https://jira.mariadb.org/browse/MDEV-7563