日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL 高级 - 触发器 - 创建及应用

發(fā)布時(shí)間:2024/4/14 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 高级 - 触发器 - 创建及应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

創(chuàng)建觸發(fā)器

語(yǔ)法結(jié)構(gòu) :

create trigger trigger_name before/after insert/update/deleteon tbl_name [ for each row ] -- 行級(jí)觸發(fā)器begintrigger_stmt ;end;

示例

需求

通過(guò)觸發(fā)器記錄 emp 表的數(shù)據(jù)變更日志 , 包含增加, 修改 , 刪除 ;

首先創(chuàng)建一張日志表 :

create table emp_logs(id int(11) not null auto_increment,operation varchar(20) not null comment '操作類型, insert/update/delete',operate_time datetime not null comment '操作時(shí)間',operate_id int(11) not null comment '操作表的ID',operate_params varchar(500) comment '操作參數(shù)',primary key(`id`) )engine=innodb default charset=utf8;

創(chuàng)建 insert 型觸發(fā)器,完成插入數(shù)據(jù)時(shí)的日志記錄 :

DELIMITER $create trigger emp_logs_insert_trigger after insert on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'insert',now(),new.id,concat('插入后(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')')); end $DELIMITER ;

創(chuàng)建 update 型觸發(fā)器,完成更新數(shù)據(jù)時(shí)的日志記錄 :

DELIMITER $create trigger emp_logs_update_trigger after update on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'update',now(),new.id,concat('修改前(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,') , 修改后(id',new.id, 'name:',new.name,', age:',new.age,', salary:',new.salary,')')); end $DELIMITER ;

創(chuàng)建delete 行的觸發(fā)器 , 完成刪除數(shù)據(jù)時(shí)的日志記錄 :

DELIMITER $create trigger emp_logs_delete_trigger after delete on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'delete',now(),old.id,concat('刪除前(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')')); end $DELIMITER ;

測(cè)試:

insert into emp(id,name,age,salary) values(null, '光明左使',30,3500); insert into emp(id,name,age,salary) values(null, '光明右使',33,3200);update emp set age = 39 where id = 3;delete from emp where id = 5;

總結(jié)

以上是生活随笔為你收集整理的MySQL 高级 - 触发器 - 创建及应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。