2010-10-14 87 views
0

我在订购sql执行时遇到了一些问题。Maven SQL插件执行顺序

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

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

我该如何解决这个问题?

我看到2个解决方案:

  1. 合并所有脚本到创建顺序一个文件,脚本创建角色自带的脚本后创建的用户。

  2. 删除*通配符并按执行顺序指定属性中的每个文件。

  3. 根据执行顺序ex:1_user.sql,2_role.sql编号文件的名称并使用'ascending'orderfile属性(不确定这是否可行,但可能不适用)

任何更优雅的解决方案?

+1

POM如何配置sql插件? – khmarbaise 2010-10-14 14:03:39

+0

您应该通过srcFiles定义文件,这些文件将按照它们定义的顺序执行文件。 – khmarbaise 2010-10-14 14:06:33

+0

是的,但不幸的是不采用通配符:(意识到任何解决方法? – Julia 2010-10-19 06:28:24

回答

0

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

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

我该如何克服这个问题?

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

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

我想你钉了。我偏好选项3.

+0

我觉得最好的选择是使用与我想执行的顺序,但不幸的是,如上所述,它不接受通配符。 – Julia 2010-10-19 06:31:19