【发布时间】:2015-05-06 09:32:51
【问题描述】:
我有一个表,他的 PK 作为 FK 在另外两个表中。 当我从该表中删除一条记录时,我希望根据已删除的行从其他表中删除记录。 我知道有一个使用触发器的解决方案,这是我的:
CREATE TRIGGER Trig_Supp
ON T_SALARIE
FOR DELETE
AS
DELETE FROM T_EVOLUTION
WHERE Matricule = SELECT Matricule FROM deleted
DELETE FROM T_EVALUATION
WHERE Matricule = SELECT Matricule FROM deleted
GO
但是我们的老师告诉我们要寻找另一种可以与此触发器相同的解决方案,但我在互联网上找不到任何东西。
那么真的有另一种解决方案吗?
【问题讨论】:
-
并且您的触发器并不完全正确,因为 sql server 不会为每一行而是为每个语句触发它们。如果有人用一条语句删除超过 1 行,您的触发器将失败
-
同意以前的 cmets,但也:更不用说如果 FK 已实际设置,此触发器将不起作用,因为会发生约束检查(并防止第一次删除发生)早在此触发器(将)触发之前。
标签: sql-server triggers