Создание функции триггера в pgAdmin 4 - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь создать триггерную функцию в базе данных PostgreSQL с помощью pgAdmin 4. Функция должна выполнять pg_notify и возвращать вновь вставленные данные в JSON. Но я получаю сообщение об ошибке и не могу понять, где находится ошибка.

Код:

CREATE FUNCTION ba_weather.weather_notify_func()
  RETURNS trigger
  LANGUAGE 'plpgsql'
  NOT LEAKPROOF
AS $BODY$ CREATE OR REPLACE FUNCTION weather_notify_func()
 RETURNS TRIGGER
 LANGUAGE plpgsql
 AS $$
 BEGIN
    PERFORM pg_notify('weather_insert', row_to_json(NEW));
    RETURN NEW;
 END;
 $$;$BODY$;

ALTER FUNCTION ba_weather.weather_notify_func()
   OWNER TO me;

Ошибка:

enter code here
ERROR: syntax error at or near "CREATE"
LINE 5: AS $BODY$ CREATE OR REPLACE FUNCTION weather_notify_func()
^

Решение:

CREATE FUNCTION ba_weather.weather_notify_func()
  RETURNS trigger
  LANGUAGE 'plpgsql'
  NOT LEAKPROOF
AS $BODY$ 
 BEGIN
    PERFORM pg_notify('weather_insert', row_to_json(NEW));
    RETURN NEW;
 END;
 $BODY$;

ALTER FUNCTION ba_weather.weather_notify_func()
   OWNER TO me;

1 Ответ

1 голос
/ 02 мая 2020

Вы снова вложили определение функции в оператор create function:

CREATE FUNCTION ba_weather.weather_notify_func()
  RETURNS trigger
  LANGUAGE plpgsql
  NOT LEAKPROOF
AS $BODY$ 
BEGIN
  PERFORM pg_notify('weather_insert', row_to_json(NEW));
  RETURN NEW;
END;
$BODY$;

ALTER FUNCTION ba_weather.weather_notify_func()
   OWNER TO me;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...