2017-08-17 61 views
1

假設我的應用程序有兩個不同的表,其中一個表引用另一個表。還有一個關於刪除級聯的定義?如何從postgresql表中刪除沒有級聯的行

我不希望刪除的刪除級聯約束,但是,有時我的地方我想刪除忽略級聯的語句,如:

delete_without_cascade from table1 where id = id1 

有沒有辦法做到這一點

+0

那麼你是說當你從父母刪除或想要知道如何首先輕鬆地刪除子記錄時,你想要孤兒子記錄?我不確定你想要什麼。 –

回答

2

級聯刪除時會刪除刪除父母時刪除的子記錄。如果您不想這樣做,那麼您必須對由FK約束約束的列中的值進行一些操作,因爲數據庫架構不應允許記錄具有孤立值。如果列允許使用null值,則在運行刪除操作之前,先執行更新以將FK列值設置爲null

如果級聯不存在,執行delete語句時通常會出錯,因爲在其他表中會存在孤立的記錄。

如果你不理解級聯刪除是如何工作的,它不會在反向工作,即。刪除引用父表的記錄不會導致父記錄被刪除。

+0

Actuallt我希望我的應用程序刪除子節點,但是當我使用pgadmin進行某些修改時,我想查看有關子記錄的錯誤。無論如何,據我瞭解,沒有辦法建立這樣的查詢。謝謝您的回答。 – kundante