2010-05-14 75 views
1

我有SQL Server 2005中的兩個表:SQL服務器刪除 - 外鍵

  • 用戶表:有關用戶的信息等。
  • 國家表格:擁有世界上所有國家的名單。
  • USER_COUNTRY表:哪些匹配,哪個用戶訪問過哪個縣。 它擁有UserID和CountryID。

例如,USER_COUNTRY表看起來像這樣:

+----+--------+-----------+ 
| ID | UserID | CountryID | 
+----+--------+-----------+ 
| 1 |  1 |  34 | 
| 2 |  1 |   5 | 
| 3 |  2 |  17 | 
| 4 |  2 |  12 | 
| 5 |  2 |  21 | 
| 6 |  3 |  19 | 
+----+--------+-----------+ 

我的問題是,:當用戶在用戶表被刪除,怎樣才能讓它在USER_COUNTRY表相關的記錄直接刪除。也許,通過使用外鍵構造?

回答

0

是的,您可以將您的外鍵關係刪除規則設置爲級聯。

1

你必須定義在USER_COUNTRY一個外鍵指向USER.UserID和一套級聯刪除:

CREATE TABLE USER_COUNTRY (
    ... 
    CONSTRAINT USER_COUNTRY_FK1 FOREIGN KEY (UserID) 
     REFERENCES USER(UserID) 
     ON DELETE CASCADE 
); 
+0

您的FK約束實際上指向COUNTRY表並將消除國家信息....... – 2010-05-14 09:44:31

+1

@marc_s:謝謝,我剛剛修復了代碼。 – 2010-05-17 08:06:13

0

我猜CASCADE是你唯一的選擇。但是你真的想要硬刪除這樣的記錄嗎?背景:我是一個數據惡魔。