0

我在订购 sql 执行时遇到了一些问题。

我们在一个目录下的每个表都有一个 sql 脚本文件。例如:目录 c:\SqlScripts 中有 user.sql 和 role.sql。我们正在使用 sql maven 插件来执行这些 sql 文件。

角色表有一个用户表的 Foriegn 键,执行失败,因为插件试图在 user.sql 之前执行 role.sql。我不能使用 orderfile 属性,因为我们指定为 c:\SqlScripts*.sql。

我该如何克服这个问题?

我看到了 2 个解决方案:

  1. 将所有脚本按创建顺序合并到一个文件中,创建角色的脚本在创建用户的脚本之后。

  2. 去掉 * 通配符,按执行顺序指定属性中的每个文件。

  3. 根据执行顺序对文件的名称进行编号,例如:1_user.sql、2_role.sql 并使用 'ascending' orderfile 属性(但不确定这是否可行,因为可能无法应用排序)

还有更优雅的解决方案吗?

4

1 回答 1

0

我不能使用 orderfile 属性,因为我们指定为 c:\SqlScripts*.sql。

显然,这仅在您没有严格的订购要求时才有效。如果你这样做...

我该如何克服这个问题?

...使用允许以确定性方式处理排序的设置。

我看到 3 个解决方案(...)。还有更优雅的解决方案吗?

我想你搞定了。我的偏好是选项 3。

于 2010-10-14T16:05:43.487 回答