数据库实验9 SQL语言-触发器的基本操作

数据库实验9 SQL语言-触发器的基本操作

在sc表中创建insert、update触发器TR_SC_IN_SNO,要求插入选课记录或修改课表学生学号时,检查该学号是否为student表中的学号,若无则不许插入选课记录或修改选课表中的学生学号。
由于mysql的触发器不支持对多个事件同时触发操作,故在此写两个触发器实现功能。

插入选课记录时如果该学号不在student中,则报错:

delimiter //
create trigger TR_SC_IN_SNO after insert on sc
for each row
begin
if (new.sno not in (select sno from student))  #如果插入的元组学号不在student,报错
then
SIGNAL SQLSTATE'45000'SET MESSAGE_TEXT = 'the sno is not in stdent';;
end if;
END//

修改课表学生学号时如果该学号不在student中,则报错:

delimiter //
create trigger TR_SC_UP_SNO after update on sc
for each row
begin
if (new.sno not in (select sno from student))   #如果更新元组时修改的学号不在student,报错
then
SIGNAL SQLSTATE'45000' SET MESSAGE_TEXT = 'the sno is not in stdent';   
end if;
END//

可以查看建立的trigger结果:
在这里插入图片描述

发布了68 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dingdingdodo/article/details/103016666