2012-02-29 68 views
1

如果我必須刪除列O_CLIENT,那麼正確的順序是什麼?使用外鍵SQL刪除列

  1. 刪除關係;然後刪除列O_CLIENT
  2. 刪除列o_CLIENT
CREATE TABLE client (
C_ID int PRIMARY KEY AUTOINCREMENT, 
.... 
); 

CREATE TABLE order (
O_ID int PRIMARY KEY AUTOINCREMENT, 
....... 
O_CLIENT long FOREIGN KEY REFERENCES client(C_ID) 
); 

回答

4

你必須先刪除關係,否則你會最終有一個外鍵約束的錯誤。這是爲了保護您免受懸掛引用(即刪除客戶端1,但仍有3個訂單與客戶端1綁定在一起)。如果您嘗試從訂單中獲取客戶端,則不會得到任何內容,這將是無效的)

您還可以查看級聯刪除,以便頂級刪除自動刪除所有關係。然後,您可以執行一次刪除,以清除所有內容

1

刪除作爲外鍵列的列(即引用另一個表中的鍵)時,通常只需刪除列即可。

這也將刪除在此列上定義的外鍵約束。

1

如果您正在手動完成此操作,首先需要刪除關係,然後刪除該列。如果你是通過工具(如MySql Workbench)來完成這項工作,它會爲你處理這個問題。

+0

對同一秒的很多評論:) – 2012-02-29 20:06:17