MySQL 触发器详解及简单实例

 更新时间:2017年03月30日 10:39:54   投稿:lqh  
这篇文章主要介绍了MySQL 触发器详解及简单实例的相关资料,需要的朋友可以参考下

MySQL 触发器简单实例

语法

CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.

{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。

{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。

ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。

FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。

<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。

--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。

实例

example1:

创建表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)
);

创建触发器:t_afterinsert_on_tab1

作用:增加tab1表记录后自动将记录增加到tab2表中

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

测试一下

INSERT INTO tab1(tab1_id) values('0001');

看看结果

SELECT * FROM tab1;
SELECT * FROM tab2;

example2:

创建触发器:t_afterdelete_on_tab1

作用:删除tab1表记录后自动将tab2表中对应的记录删去

DROP TRIGGER IF EXISTS t_afterdelete_on_tab1;
CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
   delete from tab2 where tab2_id=old.tab1_id;
END;

测试一下

DELETE FROM tab1 WHERE tab1_id='0001';

看看结果

SELECT * FROM tab1;
SELECT * FROM tab2;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • MySQL触发器的使用详解

    MySQL触发器的使用详解

    触发器trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,下面这篇文章主要给大家介绍了关于MySQL触发器使用的相关资料,需要的朋友可以参考下
    2022-06-06
  • SQL之各种join小结详细讲解

    SQL之各种join小结详细讲解

    这篇文章主要介绍了SQL之各种join小结详细讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • MySQL主从延迟现象及原理分析详解

    MySQL主从延迟现象及原理分析详解

    今天小编就为大家分享一篇关于MySQL主从延迟现象及原理分析详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 故障的机器修好后重启,狂拉主库binlog,导致网络问题的解决方法

    故障的机器修好后重启,狂拉主库binlog,导致网络问题的解决方法

    本文主要记录一次简单的、典型的故障,发生问题的原因很简单,这个问题发生也很简单,各位同学一定要注意,一不留神就会对主库造成影响
    2016-04-04
  • 深入了解MySQL中INSTR()函数的使用

    深入了解MySQL中INSTR()函数的使用

    本文主要介绍了深入了解MySQL中INSTR()函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • MySQL的逻辑架构及工作全流程

    MySQL的逻辑架构及工作全流程

    这篇文章主要介绍了MySQL的逻辑架构及工作全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • MySQL查看数据库表容量大小的方法示例

    MySQL查看数据库表容量大小的方法示例

    这篇文章主要介绍了MySQL查看数据库表容量大小的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解mysql查询缓存简单使用

    详解mysql查询缓存简单使用

    这篇文章主要介绍了详解mysql查询缓存简单使用的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-03-03
  • 在MySQL中自定义参数的使用详解

    在MySQL中自定义参数的使用详解

    今天小编就为大家分享一篇在MySQL中自定义参数的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    使用 MySQL 来实现“附近的人”功能,可以通过Haversine 公式和ST_Distance_Sphere 函数两种方式来实现,这篇文章主要介绍了mysql实现附近的人功能,需要的朋友可以参考下
    2023-08-08

最新评论