【发布时间】:2020-03-20 08:24:33
【问题描述】:
删除触发器不起作用,而添加触发器正常工作。
它应该像这样工作:“当我在 score 表中删除一条 subject_id = 1 且 score > 8 的记录时,exellentEng 将在类表中为 -1” 我不知道为什么。帮帮我
ALTER TRIGGER [dbo].[deleteExellentEnglishStudent]
ON [dbo].[dbo_score]
AFTER DELETE AS
BEGIN
UPDATE x SET
exellent_Eng -=1
FROM dbo.dbo_class x
JOIN dbo.dbo_student s ON s.class_id = x.class_id
JOIN dbo.dbo_score c ON c.student_id = s.student_id
WHERE (c.subject_id = 1 AND c.score >= 8)
and c.score_id in (SELECT Deleted.score_id FROM Deleted)
END
ALTER TRIGGER [dbo].[addExellentEnglishStudent] ON [dbo].[dbo_score]
AFTER INSERT AS
BEGIN
UPDATE x SET
exellent_Eng += 1
FROM dbo.dbo_class x
JOIN dbo.dbo_student s ON s.class_id = x.class_id
JOIN dbo.dbo_score c ON c.student_id = s.student_id
WHERE (c.subject_id = 1 AND c.score >= 8)
AND c.score_id IN
(select Inserted.score_id from Inserted)
END
【问题讨论】:
-
添加一些选择语句,例如
select * from Deleted到触发器,然后从 SSMS 中删除,这样您就可以看到结果。然后进行类似于您的更新的选择,这样您就可以看到发生了什么。
标签: sql-server tsql database-trigger