MySQL触发器的使用
一、MySQL创建触发器语法:
CREATE TRIGGER trigger_name {BEFORE|AFTER} {DELETE|INSERT|UPDATE} ON table_name FOR EACH ROW BEGIN END;
语法说明:
- trigger_name:触发器名称。
- {BEFORE|AFTER}:before、after,表示触发时机,是执行前还是执行后触发。
- {DELETE|INSERT|UPDATE}:delete、insert、update表示触发事件。
- table_name:表名,表示是在哪个表里创建触发器。
- FOR EACH ROW:每一行受影响都触发,也叫行级触发器。
- 以BEGIN开头END结尾的语句表示触发器程序体,里面是具体的触发后的逻辑。
二、NEW 和 OLD 关键字:
除了以上语法外,常用的还有 NEW 和 OLD 关键字,OLD 用来表示原先的数据,NEW 用来表示新数据。
OLD.column // column为具体的表字段 NEW.column // column为具体的表字段
三、查询已经创建的触发器:
SHOW TRIGGERS;
四、删除触发器:
DROP TRIGGER trigger_name;
五、示例:
在user表中创建一个触发器,当user表中money字段变化时,需要往user_log表中插入一条数据。
CREATE TRIGGER user_log_trigger AFTER UPDATE ON user FOR EACH ROW BEGIN IF OLD.money != NEW.money THEN INSERT INTO user_log (before_money, after_money) VALUES (OLD.money, NEW.money); END IF; END;