MySQL
虽然输入check
语句不会报错,但是实际上并没有check
的功能。但是MySQL
依然可以利用触发器来实现相应功能。
本文将根据两个例子简要阐述MySQL
实现check
和assertion
的思路。
MySQL触发器 官方文档 MySQL Signal 官方文档
注意
signal
异常处理功能在MySQL5.5
版本以后才出现。之前的版本可以选择对相应值进行操作而不是报错。
下文测试所用数据库版本为Server version: 10.1.21-MariaDB Source distribution
check实现
例子1
是希望能够对插入表项有约束,例如年龄不能超过60
,若大于60
则报错,拒绝插入。
对于其他的支持check
的数据库,可以用以下语句来实现:
alter table emp add constraint c_age check(age<60);
而利用触发器,则可以写如下语句
delimiter //
create trigg