首先,我有幾個嵌套結構的表,我需要通過父表ID刪除所有這些表的信息。一次刪除相關信息並避免嵌套查詢(PostgreSql)
例如,四個表:
Country
country_id | country_name
City
city_id | country_id | city_name
House
house_id | city_id | house_name
Room
room_id | house_id | room_name
我需要刪除基於COUNTRY_ID的所有信息(國家本身要麼)。
現在我使用嵌套查詢,恐怕會超載系統。我現在使用的
例子:
DELETE FROM Room WHERE house_id IN (SELECT house_id FROM House WHERE city_id IN (SELECT city_id FROM City WHERE country_id = :country_id))
DELETE FROM House WHERE city_id IN (SELECT city_id FROM City ...
有什麼更緊湊的方式做到這一點? (這裏性能最重要..)
您可以用聲明的外鍵'上刪除cascade',然後直接刪除該國(或城市) –
謝謝!我認爲這是我正在尋找的 –