代码之家  ›  专栏  ›  技术社区  ›  sergionni

Spring数据源初始值设定项将触发器拆分为sql by;分隔符

  •  0
  • sergionni  · 技术社区  · 14 年前

    我们使用 org.springframework.batch.test.datasource初始值设定项 类,以便根据.sql脚本初始化db。

    在触发器添加到.sql之后,init失败。

    调试后,在此处找到错误原因:

    try {
    scripts = StringUtils.delimitedListToStringArray(stripComments(IOUtils.readLines(scriptResource.getInputStream())), ";");
    }
    

    发生此错误,因为分隔符为 “;” 符号,因此触发器根据 “;” 治疗不当。

    你能告诉我更高级的数据源初始值设定项吗,它能正确理解触发器?

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Adam Musch    14 年前

    /

    CREATE OR REPLACE TRIGGER "ACCOUNT_BIU" 
      BEFORE INSERT OR UPDATE ON ACCOUNT 
      REFERENCING OLD AS OLD NEW AS NEW 
      FOR EACH ROW 
    BEGIN 
      IF (:NEW.ESKONTOTYPE_ID   IS NULL) THEN 
        IF (:NEW.KONTOTYPE_ID    ='NP') THEN 
          :NEW.ESKONTOTYPE_ID   := 311; 
        ELSIF (:NEW.KONTOTYPE_ID ='MT') THEN 
          :NEW.ESKONTOTYPE_ID   := 320; 
        ELSIF (:NEW.KONTOTYPE_ID ='NL') THEN 
          :NEW.ESKONTOTYPE_ID   := 330; 
        END IF; 
      END IF; 
      :NEW.ENDRETBRUKER := SUBSTR(USER,1,7); 
      :NEW.ENDRETDATO   := SYSDATE; 
    END; 
    /
    
    ALTER TRIGGER "ACCOUNT_BIU" ENABLE; 
    
        2
  •  0
  •   sergionni    14 年前