SQL SERVER-限制教师授课超过3个班级的触发器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER-限制教师授课超过3个班级的触发器相关的知识,希望对你有一定的参考价值。
我是SQL的初学者,需要帮助来设置触发器! (我认为它称为插入触发器)
我需要设置一个触发器,以便如果一位导师拥有3个以上的时间表ID,则不允许这样做!!(每个导师最多只能开设3个课程)
表格
TutorID/ScheduleID/Student
1 1 Tom
1 1 Harry
1 1 Lima
1 2 Zany
1 2 Logan
1 3 Zoe
1 3 Lana
老师ID /老师姓名1山姆
ScheduleID /ScheduleDate
1 17/04/20
2 18/04/20
3 19/04/20
4 20/04/20
Sam在多个日期教授3个课程-如何限制某人插入另一个课程?
答案
免责声明:坦白说,我不认为通过SQL触发器来做到这一点是最好的解决方案,最好是通过您的业务层来控制这种事情。
那是说您可以使用触发器来防止插入:
CREATE TRIGGER MyTrigger ON dbo.ClassTable
AFTER INSERT
AS
IF EXISTS (SELECT TutorId, COUNT(ScheduleId)
FROM db.ClassTable
GROUP BY TutorID
HAVING COUNT(ScheduleId) > 3)
BEGIN
ROLLBACK
RAISERROR ('Too many classes scheduled!', 16, 1);
END
GO
或者,如果您愿意,您可以执行INSTEAD OF触发器,而只是静静地丢弃讨厌的多余行:)
CREATE OR ALTER TRIGGER MyTrigger ON dbo.ClassTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.ClassTable(TutorId, ScheduleId, Student)
SELECT TutorId, ScheduleId, Student
FROM inserted
WHERE TutorId IN (SELECT TutorId, COUNT(ScheduleId) FROM db.ClassTable WHERE COUNT(ScheduleId) < 3 GROUP BY TutorID);
END
GO
以上是关于SQL SERVER-限制教师授课超过3个班级的触发器的主要内容,如果未能解决你的问题,请参考以下文章
贪玩巴斯数字图像处理基础课堂笔记——序言「授课教师:尚振宏」2021.09.14