37-触发器

MySQL的触发器和存储过程一样,都在嵌入到MySQL的一段程序,触发器是由是事件来触发某个操作

1.创建触发器
  • 触发器是个特殊的存储过程
  • 不同的是,执行存储过程要使用CALL语句要调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用
1.创建只有一个执行语句的触发器
CREATE TRIGGER trigger_name gtigger_time trigger_event ON tb1_name FOR EACH ROW trigger_stmt
  • trigger_name:触发器的名字
  • trigger_time:触发时机
    • before
    • after
  • trigger_event:触发事件
    • INSERT
    • UPDATE
    • DELETE
  • tb_name:建立触发器的表名,即在哪张表上建立触发器
  • trigger_stmt:触发器执行的语句

例子:

/*创建基本表*/
CREATE TABLE account (acct_num INT,amount DECIMAL(10,2));
/*创建触发器*/
CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum=@sum+NEW.amount;

执行结果如下:

2.创建有多个执行语句的触发器
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW
   BEGIN 
    语句执行列表
   END

例子:

/*创建基础表*/
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2,INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
 a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 b4 INT DEFAULT 0
);
/*创建触发器*/
DELIMITER //
CREATE TRIGGER testref BEFORE INSERT ON test1
 FOR EACH ROW BEGIN
  INSERT INTO test2 SET a2=NEW.a1;
  DELEFT FROM test3 WHERE a3=NEW.a1;
  UPDATE test4 SET b4=b4+1 WHERE a4=NEW.a1;
  END
  //
  DELIMITER ;
2.查看触发器
1.SHOW TRIGGERS
SHOW TRIGGERS
2.在triggers表中查看触发器信息

在MySQL中.所有的触发器的定义都存在information_schema数据库的triggers表格中

SELECT * FROM information_schema.triggers WHERE condition;

例子:

SELECT * FROM information_schama.triggers WHERE trigger_name ='trig_update'\G;
3.删除触发器
DROP TRIGGER [schema_name.] trigger_name

在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器,再次创建的时候MySQL会报错

需及时删除不再使用的触发器

转载于:https://my.oschina.net/majorx/blog/3066534

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值