Rumah  >  Artikel  >  pangkalan data  >  【MySQL 14】触发器after和before

【MySQL 14】触发器after和before

黄舟
黄舟asal
2017-02-04 13:49:211422semak imbas

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;

before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

案例: 
商品 g 表中 juzi 的数量只有20个,但是如果在订单o中加入超过20了,此时如何解决呢

#创建触发器test4  
CREATE TRIGGER test4  
AFTER  
INSERT  
ON `ord`  
FOR EACH ROW  
BEGIN  
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;  
END$$

807.jpg

触发器使用before:

先触发,在判断处理之后再进行增删改不会,根据库存修改了订单的最大数量。当然我这只是简单的固定了一个值,其实可以用语句获取到动态的库存值。

#创建触发器test5  
CREATE TRIGGER test5  
BEFORE  
INSERT  
ON `ord`  
FOR EACH ROW  
BEGIN  
  IF new.much >26 THEN  
     SET new.much = 26;  
  END IF;  
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;  
END$$

808.jpg

以上就是 【MySQL 14】触发器after和before的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya: 【MySQL 13】数据库设计Artikel seterusnya:Mysql索引和优化