En supposant que j'ai trois tables:SQL supprimer déclencheur dans
TABLE_1:
ID INT PRIMARY
name NVARCHAR
TABLE_2:
ID INT PRIMARY
Table_1_ID INT (foreign key)
table_3:
ID INT PRIMARY
Table_2_ID INT (foreign key)
Les deux premières tables ont les déclencheurs suivants:
-- Table_1
CREATE TRIGGER tr_1
ON Table_1
INSTEAD OF DELETE
AS
BEGIN
DELETE FROM Table_2
WHERE Table_1_ID IN (SELECT deleted.ID FROM Table_1)
DELETE FROM Table_1
WHERE ID IN (SELECT deleted.ID FROM deleted)
END
-- Table_2
CREATE TRIGGER sr_bf_trigger_delete_ID
ON Table_2
INSTEAD OF DELETE
AS
BEGIN
DELETE FROM Table_3
WHERE Table_2_ID IN (SELECT deleted.ID FROM deleted)
DELETE FROM Table_2
WHERE ID IN (SELECT deleted.ID FROM deleted)
END
L'idée est qu'une fois supprimer une ligne (ou lignes) dans Table_1
, il va commencer le déclencheur et supprimer les lignes correspondantes dans Table_2
. Toutefois, avant de supprimer les lignes dans Table_2
, les lignes correspondantes dans Table_3
sont supprimées.
Est-ce que cela fonctionnerait? Le problème possible que je vois est que les deux fois j'accède au même "supprimé" -Table.