MySQL的:CHECK约束与日期
问题描述:
我使用MySQL
,这里是一个简单的查询集:MySQL的:CHECK约束与日期
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');
在这里,我希望第一个插入语句失败。但令人惊讶的是,查询都通过了,表中有两行。
任何人都可以请解释为什么吗?
谢谢
答
MySQL没有实现CHECK约束。从latest (5.6) fine manual:
CHECK
子句被解析但被所有存储引擎忽略。
因此,为了兼容其他SQL,语法被解析,但检查没有实现。
您可以使用BEFORE INSERT和BEFORE UPDATE触发器假冒您的CHECK约束,如果未满足所需条件,则触发threw an exception。
答
The CHECK clause is parsed but ignored by all storage engines.
+1的触发器 – 2012-02-13 01:09:05