2022
我们一起努力

触发器确实好用 - MySQL数据库

MYSQL:

建立一个触发器,实现在删除一个表格时,自动把删除的数据保存到一张备份表中,并加上删除时间:

  1. 建立备份表:

     

    CREATE TABLE `products_` (

      prod_id    int(11)  NOT  NULL,

      vend_id    int(11)  NOT  NULL,

      prod_name   char(20),

      prod_price   int(11),

      prod_desc   char(50),

      del_time    datetime ,

      PRIMARY  KEY  (`prod_id`)

    ) ENGINE=InnoDB  DEFAULT  CHARSET=gbk

  2. 建立触发器:

DROP  TRIGGER  prod_delete;          –删除触发器prod_delete,如果存在.要修改触发器只能删除重建;

DELIMITER  $$                     –重定义语名结束符;

CREATE  TRIGGER  prod_delete           –触发器为prod_delete;

BEFORE   DELETE   ON  products          –在删除products表内容前生效

FOR  EACH  ROW                    –针对所有删除的行

BEGIN                               –开始触发器内容

  INSERT  INTO  products_ (prod_id,vend_id,prod_name,prod_price,prod_desc,del_time) VALUES  (old.prod_id,old.vend_id,old.prod_name,old.prod_price,old.prod_desc,NOW());

 END;                             –触发器内空结束

 $$                          –重定义语名结束符;

DELIMITER ;                      –重新定义语名结束符;

触发器确实好用 - MySQL数据库

MSSQL:

当更新物料库存时,自动更新BOM分录表的即时库存栏:

SET ANSI_NULLS ON

GO

SET  QUOTED_IDENTIFIER  ON

GO

create  TRIGGER  ICInventory_update                   –建立ICInventory_update 触发器,alter进行修改

   ON  ICInventory                           –建立在库存表上

   AFTER update                             –作于库存更新后

AS 

begin                                      –开始执行动作

update  ICBOMChild  set  FEntrySelfZ0142=Inserted.fqty   from  Inserted where ICBOMChild.FItemID=Inserted.FItemID   and   inserted.FStockID=’4435’

end                                       –结束

GO                                        –运行

MYSQL 和MSSQL的临时表和格式不同,mysql 只有更新数据的 new 表 和删除数据的 old 表,MSSQL的更新表则名为Inserted,存放删除数据的临时表则名为deleted 。

赞(0)
文章名称:《触发器确实好用 - MySQL数据库》
文章链接:https://www.fzvps.com/93326.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!