Unable to create trigger via dbdeploy for postgres db

226 views Asked by At

I get the following error when trying to create a trigger on postgres via dbdeploy. The issue seems to be a postgres jdbc issue rather than dbdeploy. The sql statement seems to be ignored after the first semi-colon in the sql block. Any help with getting past this problem is appreciated.

The sql string (which works perfectly via pgAdmin):

    CREATE FUNCTION trigger_history() RETURNS trigger
        LANGUAGE plpgsql
        AS $$
    BEGIN
        INSERT INTO table_history(col_one, col_two)
        VALUES(NEW.col_one, OLD.col_two);
        RETURN NEW;
    END
    $$;

The error:

Caused by: org.postgresql.util.PSQLException: ERROR: unterminated dollar-quoted string at or near "$ BEGIN INSERT INTO table_history(col_one, col_two) VALUES(NEW.col_one, OLD.col_two)"
  Position: 97
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
1

There are 1 answers

0
Endrju On

I think it's the semicolon causing the problem: $$; just delete it, or move it to the next line. The $$ needs to be at the end of the line.