postgresql - 如何检查我是否只删除了必需的数据?

标签 postgresql constraints referential-integrity pg-dump

我有一个非常大的数据库(在 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/

相关文章:

java - Postgresql Java jdbc 通过 SSL 隧道连接到使用 .pem 文件在 Virtualbox 中运行的数据库

couchdb - CouchDB 是否支持参照完整性?

sql-server - 如何在检查约束中引用其他表?

mysql - 我可以不强制 MySQL 中的引用完整性吗

c# - 强制通用参数可从字符串解析的约束

algorithm - 存在约束下的排列(Interview Street - Manipulative Numbers)

java - 在 Flyway Java API 中使用 SQL 迁移文件

sql - 为什么其中一个查询运行得如此缓慢?

postgresql - 比较值和列时的光滑过滤器是选项

ios - viewDidAppear 中的调用未在添加约束的情况下调用