2010-07-14 114 views
2

我有一個主表和一個細節表。 刪除級聯是不是指定的。如何從單個查詢中的子表和父表中刪除記錄?

我想在一個查詢中刪除子記錄以及主記錄。

假設我想使用單個查詢刪除EmpID = 20的EmployeeDetails和Employee記錄。

可能嗎?

請幫忙。

+1

爲什麼不設置級聯刪除?這正是它的目的。 – Fosco 2010-07-14 14:12:04

+1

爲什麼不激活從父母到孩子的級聯刪除觸發器?有沒有啓用它的某些具體原因?在啓用規則的情況下,刪除員工記錄#20然後還將刪除EmployeeDetails中應用級聯規則的所有行... – 2010-07-14 14:14:06

+0

它可以在MySQL中完成('DELETE父表,子表FROM'父表JOIN子表...'),但據我所知,不在ANSI SQL或T-SQL中。有些情況下(非父母/子女)有用,但級聯不合適。當然,總是有交易。 – bobince 2010-07-14 14:41:49

回答

3

你不能做一個單一的查詢,除非你已經cascade delete開啓或你對PK臺,將刪除該關係FK錶行的trigger

2

SQL中沒有允許您從單個命令中的兩個表中刪除的構造。您可以在單個「批次」或交易中執行該操作(這將是更可取的)。

1

,你可以在子表上添加一個觸發器刪除任何其他孩子,然後刪除父母。這不是「技術上」的單一陳述,但是您的應用程序只需要發出一個DELETE,而且全部都是爲您完成的。

相關問題