Primavera DataSourceInitializer divide gatillo en sql por; delimitador
-
04-10-2019 - |
Pregunta
Utilizamos org.springframework.batch.test.DataSourceInitializer clase con el fin de init DB en base a las secuencias de comandos .sql.
Init se falló, después del disparo se había añadido a .SQL.
Después de la depuración, se descubrió que la causa del error, mientras que aquí:
try {
scripts = StringUtils.delimitedListToStringArray(stripComments(IOUtils.readLines(scriptResource.getInputStream())), ";");
}
ocurrió este error, porque delimitador es ";" símbolo, así disparador fue splittet en varias partes sobre la base de ";". y tratada uncorrectly
Puede usted aconsejarme más avanzada inicializador fuente de datos, que voy a entender los factores desencadenantes correctamente?
Gracias.
Solución 2
se resolvió mediante la escritura propia DataSourceInitilaizer, que trata ';' dependientemente sobre gatillo o no
Otros consejos
La sentencia CREATE TRIGGER es un bloque PL / SQL y bloques PL / SQL se debe terminar con un solo /
como el primer carácter de una fila.
Esto debería funcionar:
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;