触发器

触发器

  • 什么是触发器?
    触发器,就是一种特殊的存储过程,能够完成特定功能的sql片段。特点:无需利用call关键字调用,当对数据表中的数据执行操作时,自动触发这个sql片段的执行无需手动调用
    在mysql中,只有执行增、删、改的操作时才能触发触发器
    案例
  • 1.创建一个日志信息表:记录对学生信息的操作(记录在时间对学生进行了***的操作)
-- 创建一个日志信息表:记录对学生信息的操作(记录在***时间对***学生进行了***的操作)
CREATE TABLE stulogs(
	id int primary key auto_increment,
	logtime TIMESTAMP,
	logtext VARCHAR(200)
);
  • 触发器的使用
    eg.手动添加
    • 创建触发器
      语法:
CREATE TRIGGER <触发器名> 
<before|after>    -- 定义触发时机
<insert|delete|update>    -- 定义DML类型
ON <数据表名>
FOR EACH ROW
sql——statement   -- 触发器操作

eg.

CREATE TRIGGER tri_test1
before insert on students 
-- 意为:创建触发器tri_test1,在students表进行insert操作之前触发tri_test1触发器
FOR EACH ROW    -- 声明为行级触发器(只要操作一条记录就触发触发器执行一次)
sql——statement   -- 触发器操作
CREATE TRIGGER tru_test1
after insert on students
FOR EACH ROW
INSERT into stulogs(logtime,logtext) VALUES(now(),CONCAT('添加',NEW.stunum,'学生信息'));

  • 查看触发器
    show triggers;
  • 删除触发器
    drop trigger tri_test1;
  • 测试


当添加两个学生信息的时候,就会触发两次触发器

这就称为行级触发器,就是说触发器的触发次数,依据添加的次数来决定的

触发器的NEW与OLD

触发器相当于一个监听器,用于监听数据表中数据的增、删、改操作,在这些操作前或后完成某些操作,处理DML关联操作
通过使用NEWOLD关键字在触发器中获取这个触发器的DML操作的数据

  • NEW:用于获取用户insert操作添加的数据或update操作后的记录
    就是形参的定义与获取
  • OLD:在触发器中用于获取delete操作前的数据或update操作前的记录

两个关键字主要是用于动态获取数据用的,对于数据的定义以及获取方式的声明
注意NEW与OLD关键字使用的时机

posted @   BattleTrumpet  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示