我正在使用Liquibase版本3.5.3,编写"格式化sql"需要执行PL / SQL的文件(到我们的Oracle 11g数据库)。
变更集使用" endDelimiter:/"允许这样做的选项。
- liquibase格式化的sql --changeset迈克:51.9 endDelimiter:/ / * - '为FIN_PLANS创建/修改触发器' - * / 开始 HIST_PKG.TRIG_HIST_TAB(' FIN_PLANS&#39); 结束; /
此变更集的回滚类似地需要执行PL / SQL,但是尽管进行了大量搜索,但我找不到这样做的方法。 我已经尝试过指定多个回滚语句,但每个回滚行都是单独执行的(如" sql语句")并且我不知道如何让它识别它是PL / SQL&#34嵌段"
我在回滚时尝试了endDelimitor选项,但无法识别。 我已经尝试过假设变更集的endDelimitor选项也适用于回滚,但是没有。
我想要的是像......
--liquibase formatted sql
--changeset mike:51.9 endDelimiter:/
/* -- 'Create/Modify triggers for FIN_PLANS' -- */
BEGIN
HIST_PKG.TRIG_HIST_TAB('FIN_PLANS');
END;
/
--rollback endDelimiter:/
--rollback BEGIN
--rollback HIST_PKG.TRIG_HIST_TAB('FIN_PLANS');
--rollback END;
--rollback /
我的搜索已经出现了 http://forum.liquibase.org/topic/issue-with-pl-sql-and-rollbacks 但是这个解决方案是使用"格式化xml" (不是"格式化sql")。 此外,https://liquibase.jira.com/browse/CORE-1608已创建,但此后已关闭,因为它还指出可以使用"格式化xml"。
因此可以在"格式化sql"中编写liquibase回滚。支持调用PL / SQL代码的文件?
答案 0 :(得分:3)
一位工作同事找到了这个问题的答案。 您必须在“changeset标头”中设置回滚结束分隔符。卫生署!
--liquibase formatted sql
--changeset mike:51.9 endDelimiter:/ rollbackEndDelimiter:/
/* -- 'Create/Modify triggers for FIN_PLANS' -- */
BEGIN
HIST_PKG.TRIG_HIST_TAB('FIN_PLANS');
END;
/
--rollback BEGIN
--rollback HIST_PKG.TRIG_HIST_TAB('FIN_PLANS');
--rollback END;
--rollback /
希望能帮助像我这样挣扎的其他人。