Я хотел бы удалить запись внутри таблицы с триггером, подобным этому:
CREATE OR REPLACE FUNCTION public.notify_trigger()
RETURNS trigger AS
$BODY$
DECLARE
BEGIN
PERFORM pg_notify('watchers',
'{' ||
'"table":"' || TG_TABLE_NAME || '",' ||
'"operation":"'|| TG_OP || '",' ||
'"row":' || (select row_to_json(row)::varchar from (SELECT NEW.*) row) ||
'}'
);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.notify_trigger()
OWNER TO postgres;
Когда я пытался удалить запись, используя delete from test_notify where id = 1277
, она возвращает ошибку, подобную этой:
ERROR: record "new" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT: SQL statement "SELECT pg_notify('watchers',
'{' ||
'"table":"' || TG_TABLE_NAME || '",' ||
'"operation":"'|| TG_OP || '",' ||
'"row":' || (select row_to_json(row)::varchar from (SELECT NEW.*) row) ||
'}'
)"
PL/pgSQL function notify_trigger() line 4 at PERFORM
********** Error **********
В таблице test_notify
у меня есть триггер, подобный этому:
CREATE TRIGGER watched_table_trigger
AFTER INSERT OR UPDATE OR DELETE
ON public.test_notify
FOR EACH ROW
EXECUTE PROCEDURE public.notify_trigger();