MySql学习笔记,触发器的创建和使用

#触发器
#user表数据变更日志,增加、修改、删除
CREATE TABLE user_log (
	id INT ( 11 ) NOT NULL auto_increment,
	operation VARCHAR ( 20 ) NOT NULL COMMENT '操作类型:insert,update,delete',
	operation_time datetime NOT NULL COMMENT '操作时间',
	operation_id INT ( 11 ) NOT NULL COMMENT '操作表的ID',
	operation_params VARCHAR ( 500 ) COMMENT '操作参数',
PRIMARY KEY ( id ) 
) ENGINE = INNODB DEFAULT charset = utf8;

select * from user_log;

#根据三种不同的操作添加三个触发器
CREATE TRIGGER user_insert_trigger
AFTER INSERT
ON user
FOR EACH ROW
BEGIN
	INSERT INTO user_log(operation,operation_time,operation_id,operation_params)
	VALUES ('insert',now(),new.id,CONCAT(
	'插入后(id:',new.id,
	',age:',new.name,
	',age:',new.age,
	',stats:',new.stats,')'));
END;
#删除触发器
DROP TRIGGER user_update_trigger;
#插入数据
INSERT into user(name,age,stats) VALUES('dsa',35,0);

CREATE TRIGGER user_update_trigger
AFTER UPDATE
ON user
FOR EACH ROW
BEGIN
	INSERT INTO user_log(operation,operation_time,operation_id,operation_params)
	VALUES ('update',now(),new.id,CONCAT(
	'修改前(id:',new.id,
	',age:',old.name,
	',age:',old.age,
	',stats:',old.stats,'),修改后(id:',new.id,
	',age:',new.name,
	',age:',new.age,
	',stats:',new.stats,')'));
END;

UPDATE user set name = 'hahhhh' where id=23;

CREATE TRIGGER user_delete_trigger
AFTER DELETE
ON user
FOR EACH ROW
BEGIN
	INSERT INTO user_log(operation,operation_time,operation_id,operation_params)
	VALUES ('delete',now(),old.id,CONCAT(
	'删除前(id:',old.id,
	',age:',old.name,
	',age:',old.age,
	',stats:',old.stats,')'));
END;
#删除触发器
DROP TRIGGER user_delete_trigger;

DELETE FROM user where id=26;

select * from user_log;

show TRIGGERS;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值