mysql day9 第十章 事件

-- 第十章 触发器
-- delimiter $$
-- create trigger payments_after_insert -- 表名_after/before_insert/delete/update
-- 		after insert on payments -- insert/delete/update
-- 		for each row -- 每行都会触发
--         -- 可以修改任何表中的数据,除了这个触发器所在表
-- begin
-- -- 触发的主体部分
-- 		update invoices
-- 		set payment_total = payment_total + new.amount-- 获取新的付款值-- old 返回更新前的行以及对应的数值 
--         where invoice_id = new.invoice_id;
-- end $$
-- delimiter ;

-- insert into payments
-- values(default,5,3,'2019-01-01',10,1) -- 更新为10

-- 习题
-- 记录被删除的数据
-- delimiter $$
-- drop trigger if exists payments_after_insert -- 可以查看到历史修改记录 与创建放在同一个表中
-- 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 $$
-- delimiter ;

-- delete
-- from payments
-- where payment_id = 9 -- 在payments表里找最新的

-- show triggers -- 查看所有触发器
-- show triggers like 'payments%' -- 返回名称中是payments开头的触发器

-- 使用触发器进行审计
-- 创建新表
-- USE sql_invoicing; 
-- CREATE TABLE payments_audit
-- (
-- 	client_id 		INT 			NOT NULL, 
--     date 			DATE 			NOT NULL,
--     amount 			DECIMAL(9, 2) 	NOT NULL,
--     action_type 	VARCHAR(50) 	NOT NULL,
--     action_date 	DATETIME 		NOT NULL
-- )

-- 插入
-- delimiter $$
-- drop trigger if exists payments_after_insert;
-- create trigger payments_after_insert
-- 		after insert on payments
-- 		for each row
-- begin
-- 		update invoices
-- 		set payment_total = payment_total + new.amount
-- 		where invoice_id = new.invoice_id;

-- 		insert into payments_audit
-- 		values (new.client_id,new.date,new.amount,'insert',now());
-- end $$
-- delimiter ;

-- 删除
-- 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 payments_audit
-- 		values (old.client_id,old.date,old.amount,'delete',now());

-- end $$
-- delimiter ;

-- 操作
-- insert into payments
-- values(default,5,3,'2019-01-01',10,1) -- 在payments_audit中出现新的记录

-- delete from payments
-- where payment_id = 10 -- 在payments_audit中出现新的记录

-- 事件
-- 根据计划执行
-- show variables like 'event%'; -- 查看以event开头的变量
-- set global event_scheduler = on -- on开 off关
-- delimiter $$
-- create event yearly_delete_stale_audit_rows
-- on schedule  -- 事件计划
-- 		-- at '2019-05-01'  -- at 执行一次
-- 		every 1 year starts '2019-01-01' ends '2029-01-01'  -- 1 hour . 2 day . 1 year 定期执行
-- do begin。   -- 这个事件触发时执行的语句
-- 		delete from payments_audit
-- 		where action_date < now() - interval 1 year; -- 删除所有超过一年的审计记录
-- -- 	datesub(now(),interval 1 year)
-- end $$
-- delimiter ;

-- 查看删除和更改事件
-- show events like 'yearly%';
-- drop event if exists yearly_delete_stale_audit_rows; -- 删除事件
-- alter event yearly_delete_stale_audit_rows enable -- 或disable禁用 -- 更改事件,代替create
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值