创建触发器
是一种自动操作,将两个表上的数据相关联,当A个表上的数据发生INSERT,UPDATE,DELETE操作时,B表的数据同步发生改变,增强数据的一致性
注意AB 不可调换
DELIMITER $$create trigger payment_after_deleteafter delete on paymentsFOR EACH ROWBEGINUPDATE invoicesSET payment_total = payment_total - old.amountWHERE invoice_id = old.invoice_id;END $$DELIMITER ;
不同DMBS代码不一定相同
after 可换成 before
delete 可换成 UPDATE.INSERT
old可换成 NEW
即当表payments删除某行数据时,invoices表同时发生更新
查看触发器

后还可加’LIKE‘等来辅助查询
删除触发器
DROP TRIGGER IF EXISTS payment_after_deleter
最好将这句加入到创建触发器的代码中,保存为一个脚本,方便后续的修改
使用触发器进行审计
先创建一个新表,里面的列项目应有,操作类型(action_type)用来记录进行的是DELETE或INSERT或 UPDATE;操作时间(action_date)
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)
在到触发器中添加以下代码
删除payments表中的某行
delete from paymentswhere payment_id = 6
最后效果
事件(EVENTS)
查看事件
SHOW EVENTS LIKE '%事件名称%'
删除事件
DROP EVENT IF EXISTS 事件名称
修改事件
ALTER EVENT ……
ALTER关键词,与CREATE一样。但不用删除重建

