Определение функции PostgreSQL в SQuirreL: unterminated dollar-quoted string

у меня есть следующее определение функции для базы данных PostgreSQL 9.3.4:

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS $$
  BEGIN
    NEW.modified_at = now();
    RETURN NEW; 
  END;
$$ LANGUAGE plpgsql;

когда я пытаюсь выполнить это в SQuirreL (3.5.3 или 3.6), я получаю следующую ошибку:

Error: ERROR: unterminated dollar-quoted string at or near "$$
 BEGIN
     NEW.modified_at = now()"
  Position: 77
SQLState:  42601
ErrorCode: 0

до сих пор я узнал это можно смягчить с помощью одинарных кавычек чтобы разграничить тело функции следующим образом:

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS '
  BEGIN
    NEW.modified_at = now();
    RETURN NEW; 
  END;
' LANGUAGE plpgsql;

все же я хотел бы знать, не может ли это быть решено иначе - я думаю, что это должно быть возможно, так как Flyway can выполните этот сценарий, и он использует тот же драйвер JDBC, который настроен в SQuirreL.


обновление: @a_horse_with_no_name отметил, что эта ошибка не имеет ничего общего с драйвером JDBC, но с тем, как белка анализирует инструкцию SQL и разбивает ее на куски перед отправкой их в базу данных. Таким образом, остается вопрос:может ли белка отправить запрос raw / unparsed? я искал совсем немного, не мог найти способ сделать что.

1 ответов


вы можете изменить разделитель операторов, чтобы оператор не разделялся на ;:

на: сессииСвойствасреда SQLЗаявление Разделитель

даже если вы не можете изменить его на пустую строку, вы можете изменить его, например,//, что позволяет выполнить оператор в вопросе.