MySQL学习日志------触发器

本文介绍了数据库触发器的概念及其在数据一致性和变动记录中的应用。通过示例展示了如何创建触发器以在数据插入、更新或删除后自动执行SQL更新,实现跨表操作并记录改动信息。同时提供了创建和删除触发器的SQL语句,并提出了用触发器维护一个记录表以跟踪每次数据变动的详细信息。
摘要由CSDN通过智能技术生成

触发器是涉及到插入、删除、更新前自动执行的一段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 ; 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值