本文作者:心月

实例演示mysql触发器的使用

心月IT博客 2019-11-25
实例演示mysql触发器的使用摘要: 触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。

一、什么是触发器

        触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。

重点:由事件来触发,也就是说触发器是有执行sql语句被动执行的。


二、触发器的种类(触发器的事件)

        触发器的事件即那些mysql操作事件可以触动触发器。

    INSERT、DELETE、UPDATE这三类事件可以触动触发器,而这三类事件又包括事件之前和事件之后,所以具体的说应该有六种触发器:

BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE
AFTER INSERT,AFTER DELETE,AFTER UPDATE


三、触发器的创建

1、创建要素:

    ①监视地点(table)
    ②监视事件(insert/update/delete)
    ③触发时间(after/before)
    ④触发事件(insert/update/delete)


2、触发器使用实例

创建两张测试数据表(tab1,tab2):

//tab1
DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
tab1_id varchar(11)
);

//tab2
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
tab2_id varchar(11)
);

创建mysql测试数据表

①创建插入事件触发器

DELIMITER //
CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
     insert into tab2(tab2_id) values(new.tab1_id);
END //
DELIMITER ;

往tab1中插入数据

INSERT INTO tab1(tab1_id) values("0001")

执行结果:

插入事件触发器执行结果

在截图中可以看到,只对tab1执行了insert事件,但在tab2中出现了新的插入数据,说明插入事件触发器被执行了。

②创建删除事件触发器

DELIMITER //
CREATE TRIGGER t_afterdelete_on_tab2
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
      delete from tab2 where tab2_id=old.tab1_id;
END //
DELIMITER ;

对tab1执行delete操作

DELETE FROM tab1 WHERE tab1_id="0001"

执行结果:

删除事件触发器执行结果

        虽然只是对tab1执行了delete操作,但tab2中的数据同样被delete掉了,说明前面创建的删除事件触发器被执行了。

以上就是mysql触发器的简单实用实例。

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-11-25
若转载请注明原文及出处:https://www.xinyueseo.com/mysql/522.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论