实验环境:
1、 操作系统:window10
2、 MySQL 5.7
实验内容与完成情况:
1.在sc表中创建insert、update触发器,检查学号是否为student表中的学号,若无则不许插入选课记录或修改选课表学生学号。
1.1 创建insert触发器:
delimiter //
create trigger TR_SC_IN_SNO after insert on sc
for each row
begin
if new.sno not in (select sno from student) then
signal sqlstate '45000'
set message_text='Insert Error';
end if;
end;//
delimiter ;
1.2 创建update触发器:
delimiter //
create trigger TR_SC_UP_SNO after update on sc
for each row
begin
if new.sno not in (select sno from student) then
signal sqlstate '45000'
set message_text='Update Error';
end if;
end;//
delimiter ;
2.在sc表中录入或修改实验数据,查看触发器的执行情况。
首先查看student表中存在的学生学号,如下所示:
2.1 在sc表中录入数据:
insert into sc values
('2006005','2',80);
运行结果:
11:22:32 insert into sc values (‘2006005’,‘2’,80) Error Code: 1644. Insert Error 0.015 sec
2.2 在sc表中修改数据:
update sc set sno='2006005' where sno='2005005';
运行结果:
11:25:15 update sc set sno=‘2006005’ where sno=‘2005005’ Error Code: 1644. Update Error 0.000 sec