MySQL:使用Date检查约束

时间:2012-02-13 00:45:01

标签: mysql sql date

我正在使用MySQL,这是一个简单的查询集:

create table dcheck (
    fdate date,
    sdate date,
    check (fdate <= sdate)
);

insert into dcheck values ('2006-12-12','2003-12-12');
insert into dcheck values ('2003-12-12', '2006-12-12');

这里我希望第一个insert语句失败。但令人惊讶的是,两个查询都通过了,表中有两行。

任何人都可以解释原因吗?

由于

3 个答案:

答案 0 :(得分:10)

MySQL没有实现CHECK约束。来自latest (5.6) fine manual

  

CHECK子句被解析但被所有存储引擎忽略。

因此解析语法是为了兼容其他SQL,但是没有实现检查。

如果未满足所需条件,您可以使用BEFORE INSERT和BEFORE UPDATE触发threw an exception伪造您的CHECK约束。

答案 1 :(得分:2)

The CHECK clause is parsed but ignored by all storage engines.

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

答案 2 :(得分:1)

从MySQL 8.0.16开始支持

CHECK约束