我是靠谱客的博主 简单冷风,最近开发中收集的这篇文章主要介绍关于Mysql 触发器常用操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基本语法:

CREATE TRIGGER 自定义名称
触发时机  触发事件 ON 触发事件所在的表名
FOR EACH ROW
触发需要执行的逻辑;

创建触发器

CREATE TRIGGER tr_seq1 
AFTER INSERT on table1
FOR EACH ROW
BEGIN
DECLARE cn INTEGER;
SELECT COUNT(galary_id) INTO cn from table2;
IF cn!=0 THEN
UPDATE table2 set table2.num=table2.num+2;
ELSE
INSERT INTO table1 VALUES(1,1,1);
END IF;
END;

上边内容解释如下:
使用符号分割,标示位于中间的内容为一个整体,而不是单单用分号分割;
创建一个名称是tr_seq1的触发器;
触发器触发事件是,向table2插入数据只好触发;
对每一行都生效;
开始具体逻辑;
声明一个变量cn,类型是INTEGER;
查询table1的数据数量,并赋值给变量cn;
判断变量cn的值是否不等于0;
符合上边的条件,则更新数据库中num的值,在原基础加2;
否则;
向table1中插入一条数据;
具体逻辑结束
分隔符结尾;
分割符声明结尾。

 

其中,触发器名参数指要创建的触发器的名字

BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后

FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器

 

查询触发器:

如果要查询test库中已有的触发器,就可以这样写:

SHOW TRIGGERS FROM database

尤其注意,是库名,不是表名。

 

如果只要查询某个触发器的详细情况,可以用类似下边的查询语句:

SHOW CREATE TRIGGER  tr_seq1
  

删除触发器:

如果触发器失效了,为了减少资源消耗,可能需要进行删除

DROP TRIGGER 触发器名称;

而一般用的比较多的,是在删除前先进行一个判断,判断是否存在,那么就成了下边这样:

DROP TRIGGER IF EXISTS 触发器名称;

如果需要一张表中创建多个触发器,并在执行时,按指定顺序触发。

要更改触发器的顺序,需要在FOR EACH ROW子句之后指定FOLLOWSPRECEDES。我们来看下这两个词的说明:

FOLLOWS允许新触发器在现有触发器之后进行

PRECEDES 允许新触发器在现有触发器之前进行

语法:

DELIMITER $$
CREATE TRIGGER  trigger_name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON table_name
FOR EACH ROW [FOLLOWS|PRECEDES] existing_trigger_name
BEGIN

END$$

 

不足之处,欢迎吐槽!

最后

以上就是简单冷风为你收集整理的关于Mysql 触发器常用操作的全部内容,希望文章能够帮你解决关于Mysql 触发器常用操作所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部