MySQL触发器

一、创建触发器

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。可以协助应用在数据库端确保数据的完整性。

表中的某些数据改变,同时引起其他相关数据改变时,使用触发器,是一类特殊的事务,可以监视某种数据操作(insert、update、delete),并触发相关操作(insert、update、delete);sql 1 触发 sql n

触发器只能创建在永久表上,不能对临时表创建触发器。

触发器不仅可以简化程序,还可以增加程序的灵活性。

语法四要点:

        监视地点(table)

        监视事件(insert、update、delete)

        触发时间(after、before)

        触发事件(insert、update、delete)

       

CREATE TRIGGER trigger_name

  trigger_time

  trigger_event

  ON tbl_name

  For Each Row

  trigger_stmt

说明:触发器只能创建在永久表上

      Trigger_time 触发器的触发时间 before(检查约束前) 或 after

      Trigger_event 触发事件 insert、update 或 delete

      Trigger_stmt begin。。。end

 

使用别名oldnew来引用触发器中发生变化的记录内容;

对于同一表相同触发时间相同触发事件只能定义一个触发器

 

问题:如何让 update 中的 goods_number、goods_id 根据 insert 的数据实时变化?

通过 new 关键字,同理监听删除 用关键字 old

Insert 无中生有为 new

Delete 从有到无为 old

Update 由 旧 变为 新 旧数据用 ord,新数据 new

函数加变量定义以及 before 和 after 的区别:

For each row 的含义:

 

 二、删除触发器

一次可以删除一个触发程序;

DROP TRIGGER trigger_name;

查看触发器

SHOW TRIGGERS;

Information.Triggers表

Select * from triggers where trigger_name =”name”;

 

三、触发器的使用

不能再触发器中使用以显示或隐式方式开启或结束事务语句;

不能调用将数据返回客户端的存储程序,也不能使用采用call语句的动态sql语句

posted @ 2019-03-05 15:47  白開水  阅读(182)  评论(0编辑  收藏  举报