我有一个非常大的数据库(在 PostgreSQL 上运行),其中包含许多表,它们之间具有复杂的关系(外键、删除级联等)。 我需要从多个表中删除一些数据,但我不确定由于级联删除,实际会从数据库中删除多少数据。
如何确认不删除不该删除的数据?
我有一个测试数据库——只是一个真实数据库的副本,我可以在其中做我想做的事:)
我唯一的想法是前后转储数据库并检查它。但是看起来不太舒服。 另一个想法 - 数据库的转储部分,正如我认为的那样,不应该受到我的 DELETE 语句的影响,并在数据删除之前和之后检查这部分。但我看不出有什么简单的方法可以做到这一点(有数百个表,删除应该适用于其中的 ~10 个)。有什么办法吗?
还有其他解决问题的方法吗?
最佳答案
您可以查询 information_schema 来为自己画一幅关于如何在数据库中定义约束的图。然后你就会知道删除时会发生什么。这不仅对这种情况有用,而且总是有用。
类似(用于约束)
select table_catalog,table_schema,table_name,column_name,rc.* from
information_schema.constraint_column_usage ccu,
information_schema.referential_constraints rc
where ccu.constraint_name = rc.constraint_name
关于postgresql - 如何检查我是否只删除了必需的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/132070/