当前位置:网站首页>MySQL advanced part 1: triggers

MySQL advanced part 1: triggers

2022-07-05 06:13:00 Dawnlighttt


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 ;

原网站

版权声明
本文为[Dawnlighttt]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140620215728.html