如何设置删除多个父行和子行的触发器?

Dha*_*alR 0 trigger sql-server

以下是相关表格:

Table_B
B_ID(PK)  Name  A_Id
1         A     1
2         B     1

Table_C
C_ID   B_Id(FK)
1      1
2      1
Run Code Online (Sandbox Code Playgroud)

现在我想Table_B从它的表中删除行Table_C。以下是我正在触发的查询:

delete from Table_B where A_Id = 1
Run Code Online (Sandbox Code Playgroud)

我也想从其子项中删除所有行。可以用触发器吗?我在 上做了一个触发器Table_B,但它只删除了一行;所以我必须运行一个循环。

谢谢。

Lam*_*mak 5

我认为没有必要使用触发器。你可以使用两个DELETE

DELETE C
FROM Table_C C
INNER JOIN Table_B B
    ON C.B_ID = B.B_ID
WHERE B.A_ID = 1;

DELETE FROM Table_B 
WHERE A_Id = 1;
Run Code Online (Sandbox Code Playgroud)

如果要使用触发器,可以在里面使用这段代码:

DELETE C
FROM Table_C C
INNER JOIN DELETED B
    ON C.B_ID = B.B_ID;
Run Code Online (Sandbox Code Playgroud)

请注意,请记住,如果该表中有外键,则可以对其进行配置ON DELETE CASCADE(但要小心您的deletes)