这已经在 Stack Overflow 上问过了,但仅限于 MySQL。我正在使用 PostgreSQL。不幸的是(而且令人惊讶的是)PostgreSQL 似乎没有像CHECKSUM table.
PostgreSQL 解决方案会很好,但通用的解决方案会更好。我找到了http://www.besttechtools.com/articles/article/sql-query-to-check-two-tables-have-identical-data,但我不明白使用的逻辑。
背景:我重新编写了一些数据库生成代码,所以我需要检查新旧代码是否产生相同的结果。
是否可以具有如下自定义唯一约束?假设我有两个 colssubset和type,两个字符串(尽管数据类型可能无关紧要)。
如果type是“真”,那么我希望的组合type,并subset是唯一的。否则,没有约束。我在 Debian 上使用 PostgreSQL 8.4。
postgresql index database-design constraint unique-constraint
考虑一种情况,需要执行一堆本质上相同的操作,唯一的变量是某个对象的名称。
在我的情况下,我需要删除一些模式,所有的形式ceu_shard_test_merge_*,以使用 shell globbing 术语。所以,从概念上讲,这可以写成
DROP SCHEMA ceu_shard_test_merge_* CASCADE;
Run Code Online (Sandbox Code Playgroud)
以类比 Unix shell。
当然这个命令不起作用,那么如何用一个命令来做到这一点呢?我的理解是,这不能以可移植的方式完成。我使用的是 PostgreSQL 8.4,但用于更新 PG 版本的方法也很好。
如果解决方案有一个试运行或虚拟选项,那就太好了,这样人们就可以在实际运行之前看到将要运行哪些命令。也许只是打印命令的一种方法?
此外,指示如何处理比给出的示例更通用的模式会很好。