MySQL触发器之insert、update、delete的使用

一、建表

testb_log表

/* test库下建立testb_log表 */
CREATE TABLE `test`.`testb_log`  (
  `ID` int(8) NOT NULL AUTO_INCREMENT,
  `TESTB_ID` int(11) DEFAULT NULL,
  `NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `AGE` int(11) DEFAULT NULL,
  `STATUS` int(1) DEFAULT NULL,
  `NEW_STATUS` int(1) DEFAULT NULL,
  `ACTION` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `TIME` datetime(0) DEFAULT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

testb表见MySQL存储过程之游标的使用

二、触发器之insert

delimiter $$
CREATE TRIGGER tr_testb_insert AFTER INSERT ON testb FOR EACH ROW
BEGIN
	INSERT INTO testb_log (TESTB_ID,`NAME`, AGE,`STATUS`,`ACTION`,TIME)
VALUES
	(NEW.ID, NEW.NAME, NEW.AGE, NEW.STATUS,'INSERT',NOW());
END;
$$

三、触发器之update

delimiter $$
CREATE TRIGGER tr_testb_update AFTER UPDATE ON testb FOR EACH ROW
BEGIN
	INSERT INTO testb_log (TESTB_ID,`NAME`, AGE,`STATUS`,`ACTION`,TIME, NEW_STATUS)
VALUES
	(OLD.ID, OLD.NAME, OLD.AGE, OLD.STATUS, 'UPDATE', NOW(), NEW.STATUS);
END;
$$

四、触发器之delete

delimiter $$
CREATE TRIGGER tr_testb_delete BEFORE DELETE ON testb FOR EACH ROW
BEGIN
	INSERT INTO testb_log (TESTB_ID,`NAME`, AGE,`STATUS`,`ACTION`,TIME)
VALUES
	(old.ID, OLD.NAME, OLD.AGE, OLD.STATUS,'DELETE',NOW());
END;
$$

五、其他

/*查看已启用的触发器*/
SHOW TRIGGERS;
/*删除名为tr_testb_insert的触发器*/
DROP TRIGGER tr_testb_insert;

六、验证

①插入一条数据

INSERT INTO testb ( ID, NAME, AGE, STATUS ) VALUES ( 1, '小明', 11, 0 )

testb_log表显示如下:

②更新一条数据

UPDATE testb SET `STATUS`='1' WHERE ID=1

testb_log表显示如下:

③删除一条数据

DELETE FROM testb WHERE ID=1

testb_log表显示如下:

评论 2 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

一只小熊猫呀

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值