我是SQL的初学者,需要帮助来设置触发器
我需要设置一个触发器,以便如果一位导师拥有3个以上的时间表ID,则这是不允许的!!
表格
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山姆
如何限制某人插入另一个类?
免责声明:坦白地说,我不认为通过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