本博文源于mysql基础,旨在对触发器的创建/修改删除做学习与相应练习。
完成此章节的学习,需要创建如下表
create table tb_emp8(id int(11) primary key,
name varchar(22) unique,deptId int(11) not null,
salary float default 0,
constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id));
CREATE TABLE tb_emp6(id INT(11) PRIMARY KEY,name VARCHAR(25),
deptId INT(11),salary FLOAT);
CREATE TABLE tb_emp7(id INT(11) PRIMARY KEY,name VARCHAR(25),deptId INT(11),
salary FLOAT default 0);
触发器是被指定关联到一个表的数据库对象,当一个表的特定事件发生时,它将会被激活。主要用于保护表中的数据。mysql所支持的触发器一共有三种:INSERT触发器、UPDATE触发器、DELETE触发器.
在INSERT语句执行之前或之后响应的触发器。应注意如下:
在UPDATE语句执行之前或之后响应的触发器。应注意如下:
在DELETE语句执行之前或之后响应的触发器。应注意如下:
CREATE <触发器名> <BEFORE | AFTER >
<INSERT | UPDATE | DELETE>
ON <表名> FOR EACH Row<触发器主体>
需要先创建表
create table tb_emp8(id int(11) primary key,
name varchar(22) unique,deptId int(11) not null,
salary float default 0,
constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id));
create trigger SumOfSalary
before insert on tb_emp8
for each row
set @sum = @sum + NEW.salary;
SET @sum=0;
insert into tb_emp8 values(1,'A',1,1000),(2,'B',1,500);
select @sum;
create trigger double_salary 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(9,'C',1,6000);
修改触发器就是删掉重新再创建。
DROP TRIGGER [IF EXISTS] [数据库名] <触发器>
drop trigger double_salary;