我是靠谱客的博主 单身小白菜,最近开发中收集的这篇文章主要介绍MySQL触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 创建
CREATE TRIGGER

CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_stmt

作用:检查给表插入新的值或者进行表内的数值计算之类的更新。
只能定义在基本表上,不能定义在视图上。

trigger_time:触发程序的动作时间,BEFORE或AFTER

trigger_event:指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:
(1)INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句实现插入数据。

(2)UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句更新数据。

(3)DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句删除数据。

trigger_stmt:当触发程序激活时执行的语句。如果执行多个语句,可使用BEGIN … END复合语句结构。

例1:
对SC的Grade属性修改时,若分数增加了10%,则将此次操作记录到SC_U表中:
SC_U(Sno,Cno,Oldgrade,Newgrade)

CREATE TRIGGER SC_T
AFTER UPGRADE OF Grade ON SC
REFERENCING
    OLD row AS OldTuple,
    NEW row AS NewTuple
FOR EACH ROW   //行级触发器
WHEN (NewTuple.Grade>=1.1*OldTuple.Grade)
  INSERT INTO SC_U(Sno,Cno,OldGrade,NewGrade)
VALUES(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Grade)

例2:

CREATE TRIGGER Student_Count
AFTER INSERT ON Student
REFERENCING
    NEW TABLE AS DELTA
FOR EACH STATEMENT
    INSERT INTO StudentInsertLog(Numbers)
    SELECT COUNT(*) FROM DELTA

2 删除
DROP TRIGGER

DROP TRIGGER [schema_name.]trigger_name

方案名称(schema_name)可选。如果省略了schema(方案),将从当前方案中舍弃触发程序。DROP TRIGGER语句需要相应权限。

3 激活
数据表上定义多个触发器,执行顺序:
(1)执行表上的BEFORE触发器;
(2)激活触发器的SQL语句;
(3)执行表上的AFTER触发器。

最后

以上就是单身小白菜为你收集整理的MySQL触发器的全部内容,希望文章能够帮你解决MySQL触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部