Maven SQL插件执行顺序

发布于 2024-09-27 23:18:54 字数 521 浏览 3 评论 0原文

我在排序 sql 执行时遇到一些问题。

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

角色表有一个指向用户表的外键,并且执行失败,因为插件尝试在 user.sql 之前执行 role.sql。我无法使用 orderfile 属性,因为我们将其指定为 c:\SqlScripts*.sql。

我该如何克服这个问题?

我看到两种解决方案:

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

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

  3. 根据执行顺序对文件名进行编号,例如:1_user.sql、2_role.sql,并使用“升序”orderfile 属性(不确定这是否有效,因为可能不应用排序)

任何更优雅的方法解决方案?

I am facing some problem in ordering the sql execution.

We have one sql script file for each table under one directory. Ex: There is user.sql and role.sql in the directory c:\SqlScripts. We are using the sql maven plugin to execute these sql files.

The role table has a Foriegn key to the user table and the execution is failing because the plugin is trying to execute the role.sql before user.sql. I cannot use the orderfile attribute as we specify the as c:\SqlScripts*.sql.

How do I overcome this problem?

I see 2 solutions:

  1. Merge all scripts into one file in the creation order, the script to create role comes after the script to create user.

  2. Remove the * wildcard and specify each file in the attribute in the order of execution.

  3. Number the name of the files according to the execution order ex: 1_user.sql, 2_role.sql and use the 'ascending' orderfile attribute(not sure if this would work though, as the ordering may not be applied)

Any more elegant solutions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

も星光 2024-10-04 23:18:55

我无法使用 orderfile 属性,因为我们将其指定为 c:\SqlScripts*.sql。

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

如何克服这个问题?

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

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

我认为你钉牢了。我倾向于选择选项 3。

I cannot use the orderfile attribute as we specify the as c:\SqlScripts*.sql.

Obviously, this will only work if you don't have strict ordering requirements. If you do...

How do I overcome this problem?

...use a setup that allows to deal with ordering in a deterministic way.

I see 3 solutions (...). Any more elegant solutions?

I think you nailed. My preference goes to option 3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文