zoukankan      html  css  js  c++  java
  • 数据库中的触发器

    数据库中的触发器

    触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。

    使用触发器有一定的好处,比如同步更新数据到某个表等,不过触发器不能使用过多,会造成性能上的影响,这方面的影响还挺大,如果有一个上百万记录的表,不推荐使用触发器。

    建表(以Mysql数据库为例)

    • t_book

    • t_bookType

    • t_book_log

    创建只有一个执行语句的触发器

    create TRIGGER trig_book after INSERT
    ON t_book FOR each ROW
    UPDATE t_booktype SET bookNum = bookNum+1 WHERE new.bookTypeId=t_booktype.id
    
    new  old   触发的两个过度变量;
    new:新增一条语句的新增对象;
    old:删除一条语句的删除对象;
    

    向t_book中插入一条数据时

    INSERT INTO t_book VALUES('6','阿甘正传',100,'Tom',2);
    

    这时去 t_bookType 中查询就会发现 文学类 的数量增加了 1。

    创建有多个执行语句的触发器

    DELIMITER |
    create TRIGGER  trig_book2 after DELETE
    ON t_book FOR EACH ROW
    BEGIN
    update t_bookType set bookNum = bookNum-1 where old.bookTypeId=t_booktype.id;
    insert into t_book_log values(null,NOW(),'在book表里删除了一条数据');
    END
    |
    DELIMITER ;
    
    DELIMITER |   数据库语句   | DELIMITER;//告诉数据库这时一条语句内容
    

    删除t_book中一条数据时

    DELETE FROM t_book WHERE id=5;
    

    这时去 t_bookType 中查询就会发现 文学类 的数量减少了 1。并且 t_book_log 中多了一条删除记录。

    查看触发器

    SHOW TRIGGERS;
    

    删除触发器

    DROP TRIGGER  trig_book;
    
  • 相关阅读:
    <html>
    Java设计模式----策略模式
    Android之通过网络播放一首简单的音乐
    关于六度关系理论,我最终算出了自己与奥巴马的关系度数
    本地创建Duplicate数据库
    资源向导之 &quot;APUE&quot;
    WinCE 下编程须要IP地址控件咋办?
    LeetCode Anagrams My solution
    一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)
    自己定义View Layout过程
  • 原文地址:https://www.cnblogs.com/renxiuxing/p/12628260.html
Copyright © 2011-2022 走看看