create trigger trigger_name trigger_time trigger_event ON tb_name for each row trigger_stmt
复制代码
trigger_name:触发器的名称
tirgger_time:触发时机,为BEFORE大概AFTER
trigger_event:触发事件,为INSERT、DELETE大概UPDATE
tb_name:表示创建触发器的表名,就是在哪张表上创建触发器
for each row: 表示任何一条记载上的利用满足触发事件都会触发该触发器
trigger_stmt:触发器的步伐体,可以是一条SQL语句大概是用BEGIN和END包含的多条语句
可以说MySQL创建以下六种触发器:
BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE
AFTER INSERT,AFTER DELETE,AFTER UPDATE
案例1:before触发器
(1)创库
create database benet;
use benet;
复制代码
(2)创表
create table tb_emp8
(id int not null primary key,
name varchar(22) not null,
deptid int not null,
salary float not null);
复制代码
(3)创建求和触发器
create trigger sumofsalary
before insert on tb_emp8
for each row
set @sum=@sum+NEW.salary;
复制代码
(4)验证求和函数
set @sum=0;
insert into tb_emp8 values (1,'A',1,1000),(2,'B',2,500);
复制代码
select * from tb_emp8;
复制代码
select @sum;
复制代码
案例2:alter触发器
use benet;
create table tb_emp6 like tb_emp8;
create table tb_emp7 like tb_emp8;
create trigger doubleofsalary
after insert on tb_emp6
for each row
insert into tb_emp7
values (
NEW.id,NEW.name,NEW.deptId,2*NEW.salary);
INSERT INTO tb_emp6 VALUES (1,'A',1,1000),(2,'B',1,500);