【问题标题】:Creating Trigger function in pgAdmin 4在 pgAdmin 4 中创建触发器函数
【发布时间】:2020-05-02 22:53:02
【问题描述】:

我正在尝试使用 pgAdmin 4 在 PostgreSQL 数据库中创建一个触发器函数。该函数应该执行 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;

【问题讨论】:

    标签: postgresql plpgsql database-trigger pgadmin-4


    【解决方案1】:

    您将函数定义再次嵌套到 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;
    

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2013-03-15
      • 2018-02-23
      • 1970-01-01
      • 2022-06-29
      相关资源
      最近更新 更多