触发器是涉及到插入、删除、更新前自动执行的一段SQL
1、通常利用触发器增强数据的一致性
2、记录数据改动情况
创建触发器
例如添加数据后对某合计列进行自动更新
可以实现跨表更新,例如往A表中增加数据,触发器可以自动更新B表中的某些数据
delimiter $$
create trigger triggerr_name
# 触发条件
after/before insert/update/delete on table_name1
for each row # 对每个插入的行都执行一次触发器
begin
update table_name2 # 更新另一个表
set some_columns = a + new.columns # 新insert数据的某列数据
# 可使用new.columns_name选取新加入的数据的某列;当然也可以使用old.columns_name选取原有数据的某列
where condition;
end $$
delimiter ;
查看触发器
show triggers
show tirggers like ' ' # 查看某种使用的trigger,与你的命名有关
删除触发器
drop trigger if exists trigger_name
用于记录数据的改动情况
# 即创建一张新表格 记录每次改动信息,相当于每改动一次就往该表格中插入一条信息
# 创建记录表
CREATE TABLE table_name_record_action
(
# 自定义 需要自己设计你需要记录的信息
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 $$
create trigger triggerr_name
after/before insert/update/delete on table_name1
for each row
begin
update table_name2
set some_columns = a + new.columns
where condition;
# 至此,前面不变
# 在此处往新的记录表中插入数据即可
insert into table_name_record_action
values(new.a,new.b,........) ;
# 也可用于记录原数据(对于删改)
insert into table_name_record_action
values(old.a,old.b,........) ;
end $$
delimiter ;