Search code examples
sqldatabaseplsqldb2db2-express-c

DB2 before trigger syntax


I've defined this trigger:

CREATE TRIGGER actualizarSaldoIngreso
BEFORE INSERT ON Ingreso
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
    UPDATE Cliente SET Nombre = 'Juan' WHERE DNI = '87366034M';
END;

But DB2 returns this error:

An unexpected token "END-OF-STATEMENT" was found following "RE DNI = '87366034M'". Expected tokens may include: "<delim_semicolon>"

Any ideas?


Solution

  • You need to change terminator like this :

    --#SET TERMINATOR @
    CREATE TRIGGER actualizarSaldoIngreso
    BEFORE INSERT ON Ingreso
    FOR EACH ROW MODE DB2SQL
    BEGIN ATOMIC
        UPDATE Cliente SET Nombre = 'Juan' WHERE DNI = '87366034M';
    END@
    --#SET TERMINATOR ;
    

    With a different terminator, the batch doesn't execute prematurely.