MySQL 触发器

一、什么是触发器: 

  触发器(trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。(一般很少用查询做触发,因为查询太频繁)  

 二、创建触发器:

语法:

  create  trigger  触发器名称  before | after  触发事件

  on  表名  for each  row

  begin 

    触发器程序体

  end

/* <触发器名称> 最多64个字符,它和MySQL中其他对象的命名方式一样。*/
/* 【before、after】:触发器时机 */
/* insert 、update、delete */ :触发的事件 */
/* on  <表名称>  :标识建立触发器的表名,即在哪张表上建立触发器 */
/* for each row : 触发器的执行间隔:for each row子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次 */
/* <触发器程序体> 要触发的SQL语句:可用顺序,判断,循环等语句实现一般程序需要的逻辑功能 */

 

注意触发器程序体必须用分号结束,避免与MySQL结束符号冲突,在创建触发器之前修改命令终止符号 (\d $,这里把分号改成了$),在navicate里操作的话可以不用改

示例:

  根据条件写触发器

创建表:

  

 

1、作用:tab1表删除记录后,自动将tab2表中对应记录删除

 

触发器名称:tab1_delete_trigger

 

  

2、作用:当tab1更新后,自动更新tab2

 

触发器名称:tab2_update_trigger

  

3、作用:当tab1增加记录后,自动增加到tab2

触发器名称:tab_insert_trigger

   

 三、查询触发器:

1、通过show triggers 语句查看 

SHOW TRIGGERS\G

  mysql> show triggers\G     ---查看所有手动创建的触发器

2、通过系统表triggers查看

  mysql> use information_schema

  mysql> select * from triggers\G

  mysql> select * from triggers where trigger_name='tab2_update_trigger'\G

四、删除触发器:

1、通过drop triggers 语句删除

DROP TRIGGER 解发器名称
  

 

 

 

  

  

  

  

  

 

posted @ 2020-10-16 20:51  奥力给、  阅读(229)  评论(0)    收藏  举报