I am using MySQL
and here is a simple query set:
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');
Here I expect the first insert statement to fail. But surprisingly, both the queries passes and two rows are there in the table.
Can anyone please explain why?
Thanks
MySQL doesn't implement CHECK constraints. From the latest (5.6) fine manual:
The
CHECK
clause is parsed but ignored by all storage engines.
So the syntax is parsed for compatibility other other SQLs but the checking is not implemented.
You could fake your CHECK constraint with BEFORE INSERT and BEFORE UPDATE triggers that threw an exception if the desired condition was not met.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With