0
点赞
收藏
分享

微信扫一扫

MySQL触发器的使用

拾光的Shelly 2022-01-08 阅读 41

触发器是与表有关的数据库对象,可以在表的insert、update、delete操作之前或之后触发并执行触发器中定义的sql语句。

这种特性可以协助引用系统在数据库段确保数据的完整性、日志记录、数据校验等操作。

使用别名new(新的)和old(旧的)来应用触发器中发生变化的内容记录。

触发器的分类

触发器的语法

account表数据:

 account_log数据:

 触发器的创建

# insert型触发器
DELIMITER $
CREATE TRIGGER trig1
AFTER INSERT
ON account
FOR EACH ROW
BEGIN
INSERT INTO account_log(operateType,operateTime,account_id,remarks)
VALUES('insert',NOW(),new.id,CONCAT("插入的数据{id=",new.id,",u_name=",new.u_name,",money=",new.money,"}"));
END$
DELIMITER ;

# delete型触发器
DELIMITER $
CREATE TRIGGER trig2
BEFORE DELETE
ON account
FOR EACH ROW
BEGIN
INSERT INTO account_log(operateType,operateTime,account_id,remarks)
VALUES('delete',NOW(),old.id,CONCAT("删除的数据{id=",old.id,",u_name=",old.u_name,",money=",old.money,"}"));
END$
DELIMITER ;
# delete型触发器
DELIMITER $
CREATE TRIGGER trig3
BEFORE UPDATE
ON account
FOR EACH ROW
BEGIN
INSERT INTO account_log(operateType,operateTime,account_id,remarks)
VALUES('delete',NOW(),new.id,CONCAT("修改前的数据{id=",old.id,",u_name=",old.u_name,",money=",old.money,"}"
"修改后的数据{id=",new.id,",u_name=",new.u_name,",money=",new.money,"}"));
END$
DELIMITER ;

# 添加账户表中的数据
INSERT INTO account(u_name,money) VALUES('张三',600);
# 查看日志表中的数据
select * from account_log;

# 删除账户表中的数据
DELETE FROM account WHERE u_name='张三';
# 查看日志表中的数据
select * from account_log;

# 修改账户表中的数据
UPDATE account SET u_name='mark' WHERE u_name='jack';
# 查看日志表中的数据
select * from account_log;

查看触发器以及删除触发器 

总结:触发器的关键字是trigger,可以用它来对触发器进行操作,因为触发器的性质,在日志中受到广泛使用。

打卡第16天,欢迎对数据库感兴趣的朋友一起讨论、交流,请多指教! 

举报

相关推荐

0 条评论