Mysql中触发器的使用

来源:互联网 发布:人工智能2电影 编辑:程序博客网 时间:2024/05/01 21:47

概念

触发器是一种特殊的事务,它监听增删改操作,并触发增删改操作。主要是用来处理一些比较复杂的业务逻辑以保证数据的联动性。其包含了四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)

语法

CREATE TRIGGER '触发器名称' '触发时间(after|before)' '监听的事情(insert|update|delete) 'ON '触发地点' FOR EACH ROW BEGIN  sql1;  sql2;  sql3;END$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

FOR EACH ROW 用来标识触发器的类型,因为MySQL支持行级别的触发器,不支持语句触发器,故只能使用FOR EACH ROW 。因为触发器中使用’;’区分多个事件语句,故需要重新定义定界符。

创建表

table1

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

table2

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

实例

example1:

创建触发器:t_afterinsert_on_tab1

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

DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1FOR EACH ROWBEGIN     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_tab1AFTER DELETE ON tab1FOR EACH ROWBEGIN      delete from tab2 where tab2_id=old.tab1_id;END;

测试一下

DELETE FROM tab1 WHERE tab1_id='0001';
看看 结果
SELECT * FROM tab1;SELECT * FROM tab2;

注意:当触发器和存贮过程交互的调用某一个字段的时候会出现这个报错mysql error 1142


原创粉丝点击