当前位置:网站首页>MySQL advanced part 1: triggers
MySQL advanced part 1: triggers
2022-07-05 06:13:00 【Dawnlighttt】
List of articles
Trigger introduction
Triggers are database objects related to tables , Referring to insert/update/delete Before or after , Trigger and execute the... Defined in the trigger SQL Statement set . This feature of triggers can assist in application on the database side Ensure data integrity , logging , data verification Wait for the operation .
Use the alias OLD and NEW To refer to the changed record content in the trigger , This is similar to other databases . Now triggers only support row level triggering , Statement level triggering is not supported .(Oracle Existing row level triggers , There are also statement level triggers )
Trigger Type | NEW and OLD Use |
---|---|
INSERT Type trigger | NEW Indicates the data to be added or added |
UPDATE Type trigger | OLD Represents the data before modification , NEW Represents the data that will be or has been modified |
DELETE Type trigger | OLD Data that will be or has been deleted |
Create trigger
Grammatical structure :
create trigger trigger_name
before/after insert/update/delete
on tbl_name
[ for each row ] -- Line level triggers
begin
trigger_stmt ;
end;
Example
demand
Record by trigger emp Data change log for table , Including the addition of , modify , Delete ;
First, create a log table :
create table emp_logs(
id int(11) not null auto_increment,
operation varchar(20) not null comment ' Operation type , insert/update/delete',
operate_time datetime not null comment ' Operating time ',
operate_id int(11) not null comment ' Operation table ID',
operate_params varchar(500) comment ' Operating parameters ',
primary key(`id`)
)engine=innodb default charset=utf8;
establish insert Type trigger , Complete logging when inserting data :
DELIMITER $
create trigger emp_logs_insert_trigger
after insert
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'insert',now(),new.id,concat(' After inserting (id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end $
DELIMITER ;
establish update Type trigger , Complete logging when updating data :
DELIMITER $
create trigger emp_logs_update_trigger
after update
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'update',now(),new.id,concat(' Before the change (id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,') , After modification (id',new.id, 'name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end $
DELIMITER ;
establish delete Triggers for rows , Complete logging when deleting data :
DELIMITER $
create trigger emp_logs_delete_trigger
after delete
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'delete',now(),old.id,concat(' Before deleting (id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')'));
end $
DELIMITER ;
test :
insert into emp(id,name,age,salary) values(null, ' The left emissary of light ',30,3500);
insert into emp(id,name,age,salary) values(null, ' Bright right emissary ',33,3200);
update emp set age = 39 where id = 3;
delete from emp where id = 5;
Delete trigger
Grammatical structure :
drop trigger [schema_name.]trigger_name
If not specified schema_name, The default is the current database .
Check triggers
Can be executed by SHOW TRIGGERS Command to view the status of the trigger 、 Grammar and other information .
Grammatical structure :
show triggers ;
边栏推荐
- [practical skills] how to do a good job in technical training?
- leetcode-3:无重复字符的最长子串
- redis发布订阅命令行实现
- Leetcode-9: palindromes
- 【Rust 笔记】15-字符串与文本(下)
- [rust notes] 16 input and output (Part 1)
- Error ora-28547 or ora-03135 when Navicat connects to Oracle Database
- wordpress切换页面,域名变回了IP地址
- Currently clicked button and current mouse coordinates in QT judgment interface
- leetcode-6109:知道秘密的人数
猜你喜欢
Wazuh开源主机安全解决方案的简介与使用体验
wordpress切换页面,域名变回了IP地址
On the characteristics of technology entrepreneurs from Dijkstra's Turing Award speech
6. Logistic model
redis发布订阅命令行实现
[cloud native] record of feign custom configuration of microservices
RGB LED infinite mirror controlled by Arduino
Leetcode-6108: decrypt messages
Wazuh開源主機安全解决方案的簡介與使用體驗
Liunx starts redis
随机推荐
Open source storage is so popular, why do we insist on self-development?
shared_ Repeated release heap object of PTR hidden danger
【云原生】微服务之Feign自定义配置的记录
Solution to game 10 of the personal field
Real time clock (RTC)
1.13 - RISC/CISC
1.15 - input and output system
Simply sort out the types of sockets
Currently clicked button and current mouse coordinates in QT judgment interface
Spark中groupByKey() 和 reduceByKey() 和combineByKey()
Quickly use Amazon memorydb and build your own redis memory database
Sword finger offer II 058: schedule
[rust notes] 17 concurrent (Part 1)
1.13 - RISC/CISC
可变电阻器概述——结构、工作和不同应用
Basic explanation of typescript
实时时钟 (RTC)
Leetcode-6110: number of incremental paths in the grid graph
数据可视化图表总结(二)
Shutter web hardware keyboard monitoring