010、MySQL触发器
本文最后更新于 319 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

MySQL触发器

一、触发器介绍和语法

1.1 触发器介绍

触发器是与表相关的数据库对象,指在增删改之前或之后,触发并执行触发器中定义的SQL语句集合。
触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名New和Old来引用触发器中发生变化的记录内容,这与其他数据库是相似的。现在触发器还只支持行级
触发,不支持语句级触发

触发器类型 New和Old
insert型触发器 New表示将要或已经新增的数据
update型触发器 Old表示修改之前的数据,New表示将要或已经修改后的数据
delete型触发器 Old表示将要或已经删除的数据

1.2 语法

创建触发器:

create trigger trigger_name
before/after insert/update/delete
on tb_name for each row --行级触发器
begin
    trigger_stmt; --触发器具体逻辑
end;

查看触发器:

show triggers;

删除触发器:

drop trigger [schema_name.]trigger_name; --如果没有指定schema_name,默认为当前数据库

二、触发器案例

2.1 Insert触发器

案例(Insert类型):通过触发器记录tb_user表的数据变更日志,将变更日志插入到日志表user_logs中,包含增删改。

-- 创建日志表
create table user_logs(
    id int not null primary key auto_increment,
    operation varchar(20) not null comment '操作类型,增删改',
    operation_time datetime not null comment '操作时间',
    operation_id int not null comment '操作ID',
    operation_params varchar(50) comment '操作参数'
)engine = innodb default charset =utf8;

-- 创建触发器
create trigger tb_user_insert_trigger
    after insert on user for each row
begin
    insert into user_logs(id, operation, operation_time, operation_id, operation_params)
    values (null,'insert',now(),new.id,concat('插入数据内容为:id=',new.id,',name=',new.name,',age=',new.age,',gender=',new.gender,',profession=',new.profession));
end;

2.2 Update触发器

create trigger tb_user_update_trigger
    after update on user for each row
begin
    insert into user_logs(id, operation, operation_time, operation_id, operation_params)
    values (null,'update',now(),new.id,concat('跟新前数据内容为:id=',old.id,',name=',old.name,',age=',old.age,',gender=',old.gender,',profession=',
    old.profession,'|跟新后数据内容为:id=',new.id,',name=',new.name,',age=',new.age,',gender=',new.gender,',profession=',new.profession));
end;

2.3 Delete触发器

create trigger tb_user_delete_trigger
    after delete on user for each row
begin
    insert into user_logs(id, operation, operation_time, operation_id, operation_params)
    values (null,'delete',now(),old.id,concat('删除前数据内容为:id=',old.id,',name=',old.name,',age=',old.age,',gender=',old.gender,',profession=',old.profession));
end;
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇