【发布时间】:2014-07-17 20:09:36
【问题描述】:
我很难编写一个脚本来删除某些数据库中的旧约束,然后用新的引用创建新的约束。
问题是数据库不相等。
例如:swpmnh 数据库具有 fk_cmp_solicitaca_rh_contrat 约束,但 swpmcs 数据库没有。因此,如果我执行脚本,我会遇到错误并且不会提交。
我知道 Postgres 9.x 有可能做DROP CONSTRAINT IF EXISTS,但是 Postgres 8.x 和 Oracle 11g 都没有这个功能。
我在SQL工作和学习大约只有3个月,我知道这是一件简单的事情,但对我来说却是个问题。
【问题讨论】:
-
数据库存在差异,无法绕过。我注意到的一件事是他们俩都在不断寻找错误,所以只需输入两次“相同”的代码,每人一个;)
-
数据库仍然存在差异,想法是让它们平等,随着时间的推移。没看懂你的意思,抱歉。在脚本的顶部,我放置了“BEGIN”,最后放置了“COMMIT”。所以,如果我有任何错误,它不会执行任何操作
-
所有 Postgres 8.x 版本的生命周期结束(从现在起,8.4 将仅支持 2 个月)。因此,绝对没有理由将 Postgres 8.x 用于任何新事物
-
我通常会做脚本来创建数据库结构,所以不需要提交,这让我可以作弊;我根本没有任何提交。
-
您可以使用宏处理器并生成 2 个不同的脚本,一个用于 postgresql,一个用于来自同一源的 oracle...每个 C 编译器都带有一个,或者您可以使用 m4 之类的东西...不确定我会推荐它;希望有人有更好的主意
标签: sql oracle postgresql constraints exists