标签:触发器 OLD id TRIGGER payments invoice mysql payment 详解
触发器是在插入 更新 删除语句前后自动执行的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 事件可以暂时启用禁用
标签:触发器,OLD,id,TRIGGER,payments,invoice,mysql,payment,详解 来源: https://www.cnblogs.com/yxj808/p/15080900.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。