mysql--MySQL 触发器学习和实验

MySQL 触发器学习和实验

– 假设系统中有两个表:
– 班级表 class(班级号 classID, 班内学生数 stuCount)
– 学生表 classstu (学号 stuID, 所属班级号 classID)
– 要创建触发器来使班级表中的班内学生数随着学生的添加自动更新,代码如下:
– 复制代码
create table class(classid int,stuCount int);
create table classstu(stuid int ,stuname varchar(20),classid int);
– 初始化班级数据,一、二、三、四班都是30人
insert into class values(1,30);
insert into class values(2,30);
insert into class values(3,30);
insert into class values(4,30);
– 触发器,加载在student表上,该表一有新的学生插入,肯定相应的班的人数就发生变化
DELIMITER $
create trigger tri_stuInsert after insert
on classstu for each row
begin
declare c int;
set c = (select stuCount from class where classID=new.classID);
update class set stuCount = c + 1 where classID = new.classID;
end$
DELIMITER ;
– 测试触发器
– 往 1班 插入 3 名学生
select * from classstu;

select * from class;
insert into classstu values (101,‘peter01’,1);
insert into classstu values (102,‘peter02’,1);
insert into classstu values (103,‘peter03’,1);
select * from class;

实验结果

mysql--MySQL 触发器学习和实验_第1张图片
mysql--MySQL 触发器学习和实验_第2张图片
需要注意的是:
这里的new表,相当于mssqlserver下的inserted表,表中的数据是将要插入或是已经插入的新数据;
还有个old表,这里没有用到,相当于是mssqlserver下的deleted表,表中的数据是将要更新或已经更新了的原数据;

你可能感兴趣的:(数据库)