首先,我有几个嵌套结构的表,我需要通过父表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',然后直接删除该国(或城市) –
谢谢!我认为这是我正在寻找的 –