外鍵

2008-12-31 59 views
1

有人可以請讓我知道刪除外鍵引用的表的最佳方法。外鍵

謝謝, 克里斯

回答

1

刪除外鍵約束,然後刪除表一次,沒有人是被迫承認它。如果第二個表中的列(未被刪除的列)未在別處使用,那麼在刪除約束之後,您應該刪除整列。

1

在允許刪除它引用的表之前,您需要刪除約束。 SQL Server使用的語法如下:

ALTER TABLE <table_name> DROP FOREIGN KEY <foreignkey_name> 

請記住,在表中存在約束引用要刪除所以這就是你應該改變表中的一個。

+0

或者進入管理工作室,選擇表格,右鍵單擊,選擇設計,單擊關係按鈕,然後刪除您在左側列表中看到的所有內容。 – 2008-12-31 06:57:06

5

預期的目標是孤立那些記錄,而不再使用外鍵?如果是這樣,前面提到的關於禁用密鑰的方法沒有問題,否則您可能希望刪除引用您想要先刪除的表的記錄(或者將其更新爲指向更適當的記錄,或者如果在此處有意義的話則更新爲NULL)案件)。我似乎是從另一個方向來看待這個問題,你確定外鍵是沒有意義的,如果是的話,爲什麼不把它刪除呢?在某些時候,有人想限制這種行爲,在禁用約束條件之前,我確保我理解他們的目的,並且有很好的理由繞過這些保護措施。

+0

如果可以的話,我會給你加10 – HLGEM 2008-12-31 14:24:39

0

通過使用級聯刪除

1

不刪除與外鍵約束的表,而不考慮外鍵的表的影響。讓我來解釋簡單地刪除外鍵,然後用一個例子刪除表的影響。

考慮兩個表格 - 零件和訂單細節。有一個外鍵約束表示在將零件放入orderdetails表之前零件必須存在。存儲在orderdetail表中的是零件表中零件的ID,而不是零件名稱或描述。假設您刪除外鍵,然後刪除零件表。現在orderdetail表中的所有數據都是無用的,因爲你無法知道訂購的部件是什麼。這包括尚未發貨的訂單以及客戶可能打電話詢問有關問題的訂單。此外,您現在無法重新創建數據,除非通過恢復備份(希望您擁有一個備份)。

此外,假設您想要刪除表並重新創建它以對錶進行更改。然後重新加載信息並重新打開外鍵。在這種情況下,您應該使用alter table而不是drop並重新創建,但如果您不這樣做,您最終可能會得到與最初不同的id號,因此現在訂單將引用錯誤的id。這可以安全地完成,但是你必須非常仔細地做,並且要考慮後果。