MySQL CHECK约束替代
问题描述:
根据MySQL手册“CHECK
子句被解析,但被所有存储引擎忽略”。所以我知道简单的解决方案是不可能的,但还有另一种可行的方法来达到相同的结果吗?也许通过使用触发器或存储过程?如果是这样如何?MySQL CHECK约束替代
此外,由于它只是“解析”,是说尽量避免使用它,因为它不起作用?
使用MySQL 5.5.11和InnoDB表
答
在这个有趣的文章
https://wikis.oracle.com/display/mysql/Triggers#Triggers-EmulatingCheckConstraints
我经常用这个方法来看看。
答
我使用的版本,21年5月5日 你可以使用ENUM的检查约束该链接 http://dev.mysql.com/doc/refman/5.0/en/enum.html
+0
在'FLOAT'列上不是很有用,或者允许的值是0-100000之类的地方...... – ceejayoz 2013-01-09 22:33:23
十分感谢。详细说明如何实施它。我将不得不玩一下,看看这些限制是否会在我的应用中产生问题。你真的使用专用的数据库只为这些触发器? – swisscheese 2011-04-27 16:31:51
嗨。我不明白你的专用db是什么意思。每次在需要它们的所有dbs中需要它们时,我都会使用触发器。 – 2011-04-27 16:44:05
来自该教程“为了做到这一点,我们需要创建两件事情,一个表格来产生错误,另一个表格插入到表格中,这样会产生错误,最好在单独的数据库,以便它们可以被任何数据库访问。“ – swisscheese 2011-04-27 16:46:35