2013-11-22 41 views
0

我想限制列標識的輸入值,其中值在2到5之間的值只允許在id列中插入,這樣做我正在使用check約束,但它根本不起作用。下面我插入三行,其中第二行和第三行不滿足檢查條件,但仍然插入。在mysql中使用檢查約束來限制輸入值

如何限制這些值?我使用的是mysql 5.6InnoDB數據庫引擎。

start transaction; 

drop table if exists company ; 

create table company(

    id int check(id between 2 and 5), 

    name varchar(20)); 

insert into company(id,name) values(2,'Ron'),(6,'Queen'),(1,'Loren'); 

commit; 

rollback; 

回答

0

震耳欲聾! Mysql 忽略檢查約束!

Mysql的「supports」檢查約束只有這麼遠,讓他們在創建表的語句,但僅限於兼容性從其他數據庫導出模式 - 一旦確定他們被完全忽略。

使用觸發器來執行這些約束。

+0

謝謝,它確實有效。 –