(3)建立添加学生触发器tri_addstudent,当学生信息中的专业号不对或者系统中已存在所对应学号的学生时,系统给与错误提示并回滚,其关键代码如下所示:
CREATE TRIGGER tri_addstudent ON tb_student
FOR INSERT,UPDATE
AS
IF(SELECT COUNT(*) FROM tb_major,inserted
WHERE tb_major.MajorNum=inserted.MajorNum)=0
BEGIN
PRINT '未找到该学生的专业信息,请添加相应专业后重试!'
ROLLBACK
END
ELSE IF
(SELECT COUNT(*) FROM tb_student,inserted
WHERE tb_student.StudentNum=inserted.StudentNum)>0
BEGIN
PRINT '学号产生冲突,请核对后重试!'
ROLLBACK
END
(4)建立学生选课触发器tri_takecourse,课程选课人数超过40个或者对应学生选课门数超过5门或者当前时间不是选课时间段时,系统给与错误提示并回滚,其关键代码如下所示:
CREATE TRIGGER tri_takecourse ON tb_stucourse
FOR INSERT,UPDATE
AS
IF(SELECT COUNT(*) FROM tb_stucourse,inserted
WHERE tb_stucourse.CourseNum=inserted.CourseNum)>40
BEGIN
PRINT '所对应课程选课人数不能超过40个!'
ROLLBACK
END
ELSE IF
(SELECT COUNT(*) FROM tb_student,inserted
WHERE tb_student.StudentNum=inserted.StudentNum)>5
BEGIN
PRINT '对应学生的选课不能超过5门!'
ROLLBACK
END
ELSE IF
(SELECT IfTakeCourse FROM tb_control)='0'
BEGIN
PRINT '当前不是选课时间段!'
ROLLBACK
END
oracle 的语法和 sqlserver 语法不一样的,你需要对照oracle进行修改。
给你另一个帖子中的例子,你自己对着改就行了:
那个帖子?发个链接呗?