• ADADADADAD

    触发器确实好用[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:04

    作者:文/会员上传

    简介:

    MYSQL:建立一个触发器,实现在删除一个表格时,自动把删除的数据保存到一张备份表中,并加上删除时间:建立备份表:CREATE TABLE `products_` ( prod_idint(11) NOT NULL, vend_

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MYSQL:

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

      建立备份表:

      CREATE TABLE `products_` (

      prod_idint(11) NOT NULL,

      vend_idint(11) NOT NULL,

      prod_namechar(20),

      prod_priceint(11),

      prod_descchar(50),

      del_timedatetime ,

      PRIMARY KEY (`prod_id`)

      ) ENGINE=InnoDB DEFAULT CHARSET=gbk

      建立触发器:

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

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

    CREATE TRIGGER prod_delete--触发器为prod_delete;

    BEFOREDELETEON 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 ;--重新定义语名结束符;



    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.fqtyfrom Inserted where ICBOMChild.FItemID=Inserted.FItemIDandinserted.FStockID='4435'

    end--结束

    GO--运行



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




    触发器确实好用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: 触发器