zoukankan      html  css  js  c++  java
  • mysql详解9:触发器和事件


    触发器是在插入 更新 删除语句前后自动执行的sql代码
    保证数据一致性
    DELIMITER $$
    CREATE TRIGGER payment_after_insert
    After INSERT ON payments
    for EACH row
    BEGIN
    UPDATE invoices
    set payment_total payment_total+NEW.amout
    where invoice_id =NEW.invoice_id;
    END $$

    NEW 返回新增的行
    OLD 在更新和删除时候用 返回更新前的行 及对应数值
    DELIMITER $$
    CREATE TRIGGER payments_after_delete
    AFTER DELETE ON payments
    FOR EACH ROW
    BEGIN
    UPDATE invoices
    set payment_total =payment_total-OLD.amount
    where invoice_id =OLD.invoice_id;
    END $$

    DELITER;

    查看触发器
    show TRIGGER 显示所有的触发器
    show TRIGGER LIKE 'payments%'

    删除触发器
    DROP TRIGGER IF EXISTS payment_after_insert

    使用触发器进行审计
    操作记录
    DELIMITER $$

    DROP TRIGGER IF EXISTS payments_after_delete
    CREATE TRIGGER payments_after_delete
    AFTER DELETE ON payments
    FOR EACH ROW
    BEGIN
    UPDATE invoices
    set payment_total =payment_total-OLD.amount
    where invoice_id =OLD.invoice_id;
    INSERT INTO payment_audit
    values (OLD.client_id,OLD.date,OLD.amount,'delete',NOW());
    END $$
    DELITER;

    事件是根据计划执行的任务或一堆sql代码 定时任务
    show variables like 'event%';
    set global event_scheduler=on;
    --定义一个定时任务
    DELIMITER $$
    CREATE EVENT hourly_update_member
    on SCHEDULE
    -- at "2021-07-30"
    EVERY 1 hour STARTS '2021-01-01' ENDS '2021-12-31'
    do begin
    update member set sex=sex+1
    where `year` < now() - INTERVAL 1 year;
    -- 超过一年的记录
    end $$
    DELIMITER;

    SHOW EVENTS;
    DROP EVENT IF EXISTS hourly_update_member;
    alter 和 create 的语法相同
    ALTER EVENT hourly_update_member DISABLE;//ENABLE 事件可以暂时启用禁用

  • 相关阅读:
    洛谷P2894 [USACO08FEB]酒店Hotel
    codevs 3981 动态最大子段和
    舞蹈家怀特先生(线型)
    IOS8 通知中心(Notification Center)新特性
    WWDC2014 IOS8 APP Extensions
    IOS8 TouchID使用介绍
    IOS8 UIAlertController 弹框
    Unable to run Kiwi tests on iOS8 device
    registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
    iOS开发---- 开发错误汇总及解决方法
  • 原文地址:https://www.cnblogs.com/yxj808/p/15080900.html
Copyright © 2011-2022 走看看