– 假设系统中有两个表: – 班级表 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;
需要注意的是: 这里的new表,相当于mssqlserver下的inserted表,表中的数据是将要插入或是已经插入的新数据; 还有个old表,这里没有用到,相当于是mssqlserver下的deleted表,表中的数据是将要更新或已经更新了的原数据;