2013-09-16 53 views
3

我在「ON DELETE CASCADE」 困難的時候理解如果我有下面的示例中刪除行:「ON DELETE CASCADE」如果從子表

創建表X(ID INT主鍵, name char(10));

create table Y(bid int primary key,aid references A(id)on delete cascade);

X含有一個行(111, '邁克')

Y包含兩行(1000,111),(2000年,111)**

我如果除去行(2000,111)在表Y會發生什麼?

該行是否會被刪除或者是否會因爲引用父表而刪除任何內容?

感謝

回答

3

它將被刪除,沒有其他事情會發生。級聯刪除僅從引用表到引用表。 因此,表X上的刪除將級聯刪除到表y,而表y上的刪除對錶x沒有影響。

2

不會發生任何事情,只有從表X在數據表Y刪除一行行引用它將會被刪除。

2

ON如果您在子表上執行任何刪除,刪除級聯選項將不會生效。此選項用於指定在刪除父表中的行時,數據庫服務器還會刪除與子表中與該行(外鍵)關聯的所有行。級聯刪除功能的主要優點是它允許您減少執行刪除操作所需的SQL語句的數量。