【问题标题】:Oracle COMPOUND TRIGGER with initialization section not working properly in Flyway带有初始化部分的 Oracle COMPOUND TRIGGER 在 Flyway 中无法正常工作
【发布时间】:2013-05-17 05:21:22
【问题描述】:

我很乐意得到以下问题的支持:

如果我尝试将 PL/SQL 脚本与 COMPOUND 触发器和初始化部分集成,它将在第一个“;”之后被剪切在初始化部分:

CREATE OR REPLACE TRIGGER MY_COMPOUND_TRIGGER
    FOR INSERT OR UPDATE OR DELETE
    ON COUNTRY
COMPOUND TRIGGER
--
-- Common or Initialization Section
--
    strProgPos          Varchar2(200) := 'START';
    STATUS_VALID        constant number := 1;

--
-- After Row Section
--
AFTER EACH ROW IS
BEGIN

END AFTER EACH ROW;
--
-- After Statement Section
--
AFTER STATEMENT IS
BEGIN

END AFTER STATEMENT;

END  MY_COMPOUND_TRIGGER;
/

==> 这会导致以下异常: [错误] com.googlecode.flyway.core.api.FlywayException:在第 9 行执行语句时出错:STATUS_VALID 常数:= 1 [错误] 由 java.sql.SQLSyntaxErrorException 引起:ORA-00900: Ungültige SQL-Anweisung

我用:

  • flyway-maven-plugin:2.1.1
  • Oracle 11gR2 11.2.0.3.0
  • Java 1.6.0_21-b07
  • Windows 7 64 位

这个接缝不是驱动问题,反正我试过以下驱动:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

<dependency>
    <groupId>ojdbc</groupId>
    <artifactId>ojdbc</artifactId>
    <version>11.2.0.1.0</version>
</dependency>

<dependency>
    <groupId>ojdbc</groupId>    
    <artifactId>ojdbc</artifactId>
    <version>14</version>
</dependency>

对任何提示或建议会很高兴吗?

我还在 flyway 上为此创建了一个问题:https://github.com/flyway/flyway/issues/487

【问题讨论】:

    标签: oracle11g flyway


    【解决方案1】:

    我研究了flyway代码,看起来它没有计算触发器可能有;在声明或开始声明之前。

    我建议修复: https://github.com/cipous/flyway/commit/c7cf111f666ef417337edf3ac2410f6688abaf1f

    所以希望它会尽快修复。

    【讨论】:

    • 该修复已合并,因此您可以签出并编译最新版本或等待发布
    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多