最近做到mysql,发现check约束不起作用,记起之前貌似遇到过,但是没有记录,因此现在记录一下
至于不起作用的原因,据说无从考察,天然BUG o(* ̄︶ ̄*)o
然后,发现,数据可以插入...
解决方法:
1、如果需要设置CHECK约束的字段范围小,并且比较容易列举全部的值,就可以考虑将该字段的类型设置为枚举类型 enum()或集合类型set()
这样子,数据就插入不进去了
2、如果需要设置CHECK约束的字段是连续的,或者列举全部值很困难,比如正实数或正整数,那就只能用触发器来代替约束实现数据有效性了
当然,有一说一,这方面,还是oracle强 o(* ̄︶ ̄*)o