我是靠谱客的博主 伶俐戒指,最近开发中收集的这篇文章主要介绍MySQL数据库——触发器MySQL数据库——触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL数据库——触发器

触发器的定义

触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程 , 若任何用户对表的增、删、改操作均由服务器自动激活相应的语句块。

触发器类似于火灾报警装置,即若报警装置检测到火灾则立即报警;换成触发器即为:若触发器检测到用户对某张表进行相关操作时,触发器则立即执行对应的提前设置好的命令。

触发器的定义

CREATE TRIGGER name /*触发器名*/
[AFTER|BEFORE] [DELETE|INSERT|UPDATE]  ON 表名
FOR EACH ROW   #这句话在mysql是固定的  
BEGIN  
     -- 触发器动作 --
END;

注:[AFTER|BEFORE]是指触发时序,[DELETE|INSERT|UPDATE]是触发条件。

  1. AFTER 之后触发,即是指触发器监视的触发事件执行之后。
  2. BEFORE之前触发,即是指触发器监视的触发事件执行之前。

NEW和OLD

  • NEW:修饰符用来访问操作完成列后的值。
  • OLD:修饰符用来访问操作完成前列的值。
  • 用法:修饰符.列名
特性INSERTUPDATEDELETE
NEW有效有效NULL
OLDNULL有效有效

样例

若当前有两张表:学生表(students)和成绩表(scores),其中学生表主键为学号(sid),且 sid 为成绩表的外键,详细如下:

学生表
成绩表

若我们要在学生表(students)中删除一条信息,则对应成绩表(scores)中该学生的信息也留之无用也要对应删除,这是我们就可以设置一个删除触发器del_1

因为我们是在学生表(students)操作触发,所有我在学生表(students)上创建,同时是我们在做删除动作时触发的所以要选用触发条件为delete;同时为防止在删除该学生信息时由外键引发一些错误,所以我们选用BEFORE之前触发。即具体代码如下:

CREATE TRIGGER 'del_1'
BEFORE DELETE ON 'students'
FOR EACH ROW
BEGIN  
	delete from 'scores' where sid=old.sid;
END;

删除触发器

使用DROP TRIGGER语句可以删除MySQL中定义的触发器,基本语法形式如下:

DROP TRIGGER 触发器名 ON 表名;

-- 例:删除我们刚创建的触发器 del_1
DROP TRIGGER 'del_1' ON 'students';

最后

以上就是伶俐戒指为你收集整理的MySQL数据库——触发器MySQL数据库——触发器的全部内容,希望文章能够帮你解决MySQL数据库——触发器MySQL数据库——触发器所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部