2014-02-28 102 views
3

具有未出現在引用關係中的外鍵值的元組被稱爲懸擺元組。SQL外鍵約束和懸空元組

我在一本書中發現了這個。任何人都可以解釋嗎?

如果我們有一個

CREATE TABLE Studio (
name CHAR(30) PRIMARY KEY, 
address VARCHAR(255), 
presC# INT, 
FOREIGN KEY (presC#) REFERENCES MovieExec(cert#) 
); 

然後,我們不能用presC#中不存在MovieExec添加一個元組。那麼他們怎麼會得到懸擺的元組呢?

回答

0

添加外鍵約束將阻止您創建懸空元組。

3

你理解得很對,本書的內容是某個實現中可能允許或可能不允許的概念。

如果有表之間的邏輯連接但有(申請詳細按鍵結構之前,例如在一個臨時表)的數據庫上定義沒有實際的外鍵約束,你可以得到一個懸掛元組。雖然如果你確實有FK約束,並且執行得很好,那麼你就不會。

FK約束就是這樣:避免懸空元組的方法。

+0

或者如果您已經禁用FK一段時間然後重新啓用(不檢查更新/插入的平均值)。 –