尝试通过dbdeploy在postgres上创建触发器时出现以下错误。问题似乎是postgres jdbc问题而不是dbdeploy。在sql块中的第一个分号后,似乎忽略了sql语句。欢迎任何帮助我们解决这个问题。
sql字符串(通过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 $$;
错误:
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)
答案 0 :(得分:0)
我认为这是导致问题的分号:$$;
只是将其删除,或将其移至下一行。 $$
需要在该行的末尾。