2
我想要做的是從父表中刪除一行以將數據保留在子表中。ON DELETE NO ACTION約束在SQL Server數據庫中
也就是說,如果我有一個表處,這與兩列父表 - depNo
和depName
,並與三列的子表 - emNo
,emName
和depNo (FK)
。
我想能夠刪除父表中的行,但要保留在子表中的一個(在我的情況下,它與許可證連接,並且是一個好主意來跟蹤它,即使用戶已被刪除)。
我猜ON DELETE NO ACTION
將無法正常工作,因爲如果我嘗試刪除父表中的行,它會給我一個錯誤。
CASCADE
和在這種情況下不好。
SET Default
- 它不會工作,因爲我無法設置默認值 - 它可能不同(它100%確定它會)。
任何想法如何使它?
爲什麼你需要保留孩子的數據?你能不能把它移動到歷史表格? – Oded
不,我需要數據留在子表中 - 完全像歷史表一樣。所以如果我刪除父表中的行,子表中的FK應該保留。 – Apostrofix
然後,您需要從子表中刪除FK約束,並有可能導致數據不一致。你所建議的是一個糟糕的數據庫設計。你應該像這樣將子行移動到不同的表中。 – Oded