BEGIN
SELECT * FROM public.vendors;
END;
$get_vendors$ LANGUAGE plpgsql;
CREATE TABLE public.vendors(
vendor_id serial PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL
);
CREATE TRIGGER get_vendors
AFTER UPDATE OR INSERT or DELETE ON public.vendors
FOR EACH ROW
EXECUTE PROCEDURE process_get_vendors();
INSERT INTO public.vendors (vendor_id, username) VALUES('1213', 'k_parker');
[42601] ERROR: query has no destination for result data
(cтрока 4)
Всем привет, я хочу, чтобы после каждого добавления данных в таблицу, срабатывал запрос и выводились все данные. Выше я вставил код, который написал. Не могли бы вы помочь? Заранее спасибо
А ведь PostgreSQL Вам правильно сообщает, что "query has no destination for result data". Т.е. куда выводились, в самом деле? Вот выполнил кто-то INSERT, и результат выводится... куда?
должно быть как-то так? CREATE OR REPLACE FUNCTION process_get_vendors() RETURNS trigger AS $get_vendors$ DECLARE ref refcursor; BEGIN OPEN ref FOR SELECT * FROM public.vendors; RETURN ref; END; $get_vendors$ LANGUAGE plpgsql; Но нужно возвращать в RETURNS и refcursor, а с этим проблема
Ещё раз — куда выводились? Вы зря игнорируете вопрос. На обычный INSERT postgres отвечает tag-ом выполнения команды, именно его и ожидает клиент, куда тут "всунуть" результат запроса?!
игнорирую, ибо не совсем понимаю
Я не знаю, как ещё объяснить... Вы видели, что происходит при INSERT, какой у него результат? Чего Вы ожидаете вместо этого?
Я ожидаю вывод таблицы public.vendors
А не получится. Триггеры не предназначены для этого, изменить тип команды (т.е. выводит она rows или нет и т.п.) они не могут. Тем более, вставить в неё какие-то "левые" recordsets.
а RETURNING не поможет?
Ничто не поможет.
Обсуждают сегодня