SQL 触发器

该文介绍了如何在MySQL中创建触发器来记录数据表(stue)的增删改操作。通过定义日志表并设置三种触发器——插入、更新和删除,每当stue表发生这些操作时,都会自动将相关信息写入日志表,以便追踪数据变动历史。
摘要由CSDN通过智能技术生成
-- itcast
-- 触发器
-- 需求:通过触发器记录 stue 表的数据变更日志( user_logs),包含增加,修改,删除;
-- 准备工作:日志表 
create table 日志表(
id int  not null auto_increment,
operation varchar(20) not null comment '操作类型, insert/update/delete',
operate_time datetime not null comment'操作时间',
operate_id int(11) not null comment'操作的ID',
operate_params varchar(500) comment'操作参数',
primary key(`id`)
) engine=innodb default charset=utf8;


-- 插入数据触发器
create trigger 触发器
after insert on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作
begin
    insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
    (null,'insert', now(), new. id, concat('插入的数据内容为:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb));

end;


-- 查看
show triggers ;-- 展示当前数据库中有哪些触发器,即触发时的状态

-- 删除
drop trigger 触发器;-- 删除触发器tb_user_insert_trigger

-- 插入数据stue
insert into stue (id, name, mima, phonr, xb, y_x, d_z) values (12,'肉肉女','123255','18987...','男','12863@qq','天津');

-- 修改数据的触发器
create trigger 修改数据触发器
after update on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作-- 行级础发器(for each row)
begin
    insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
    (null,'update', now(), new. id, concat('更新之前的数据:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb,
                                          '更新之后的数据:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb));

end;

show triggers; -- 查看触发器
update stue set  name='修改成花花' where d_z='天津';
update stue set  name='修改成bba' where id<5;  -- for each row 因为是行触发器,所以在执行where id<5的条件时,会触发5次

-- 删除数据的触发器
create trigger 删除数据触发器
after delete on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作-- 行级础发器(for each row)
begin
    insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
    (null,'delate', now(), old.id, concat('删除之前的数据:id=', old.id,' name=', old. name,'phone',old. phonr,'密码',old.mima,'性别',old.xb));

end;
delete  from stue where  d_z='天津';

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值