2013-01-05 74 views
0

我有4個數據庫表,其中所有共同包含的SessionId字段可以作爲外鍵或主鍵:(下表所示的表格不是完整的表格,只是您的縮短版本看看)如何刪除其他數據庫表中的行

會話表:

SessionId (PK) SessioName 
1    AAA 
2    AAB 

Session_Completed表

SessionId (PK) Complete 
1    0 
2    1 

問表

SessionId (PK) QuestionId(PK) (Composite Keys) 
1    1 
1    2 
2    1 
2    2 

回答表

AnswerId(PK) SessionId(FK) QuestionId 
    1    1   1 
    2    1   1 
    3    1   2 
    4    2   1 
    5    2   2 
    6    2   2 

我的問題是,是否有可能,如果在Session_CompletedSessionId從數據庫中刪除,然後在所有的刪除行其他表中它包含相同的SessionId

我也想做同樣的事情,如果從Session表中刪除SessionId

感謝

+0

當你從Session_Completed表當時刪除通過的SessionID – Prashant16

+0

其他表也刪除外鍵,你可以只能引用Session或Session_Completed。所以在一種情況下,你需要手動刪除。 –

+0

而不是手動刪除,他可以使用觸發器。這是什麼數據庫? – JeffS

回答

0

要在DELETE CASCADE添加到您的外鍵約束。

首先,刪除沒有級聯刪除的當前約束。

ALTER TABLE Session_Completed 
DROP PRIMARY KEY pk_SessionId 

然後,用ON DELETE葉柵重新添加約束:

ALTER TABLE Session_Completed 
    add CONSTRAINT fk_sessionid 
    FOREIGN KEY (SessionId) 
    REFERENCES session(SessionId) 
    ON DELETE CASCADE; 
+0

true .....但是如何從兩個表中刪除SessionId時刪除數據Session和Session_Completed?在外鍵中,您可以參考Session或Session_Completed。 –

+0

我會認爲OP應該改變他的模式。我認爲SessionId應該是一個表中的主鍵和其他地方的外鍵。 –

+0

我認爲你需要一個sessionid主鍵,然後你可以使用ON DELETE CASCADE –

相關問題