一:触发器的使用场景
当数据库的记录发生变化时,自动触发某些操作。
MySQL的触发器响应三种操作,六种场合:
三种操作:DELETE、INSERT、UPDATE。
六种场合:三种操作的BEFORE、AFTER。
用处:一般用于在BEFORE触发器中进行一些数据的校验工作(大小写、数据类型、格式等)
在AFTER触发器中进行一些后续的统计工作(行数、总数、平均值等)
二: 创建 删除触发器
创建触发器:
CREATE TRIGGER 触发器名(eg:tri_update_sg) BEFORE/AFTER INSERT/UPDATE/DELETE ON 表名
FOR EACH ROW
具体的操作
删除触发器:
DROP TRIGGER 触发器名
三:具体实例
DELIMITER || /*写触发器、存储过程等,可能与内部SQL冲突,所以换分割符*/
drop TRIGGER tri_update_sg ||
CREATE TRIGGER tri_update_sg AFTER
UPDATE ON store_goods_record FOR EACH ROW
BEGIN
IF(new.main_vendor_id = 0) THEN
set @Str = concat(new.store_no,'.',new.goods_no,'主供应商ID不能为0');
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT= @Str ;
END IF;
END||
DELIMITER ;