1
Я пытаюсь выполнить итерацию по запросу, которое я только что сгенерировал, и выполнить триггеры, похоже, Postgres не распознает, что я хочу делать, как я могу его исправить?Iterate over query
CREATE OR REPLACE FUNCTION get_all_rezultz() RETURNS VOID AS
$BODY$
BEGIN
FOR r IN (SELECT 'CREATE TRIGGER ' || tab_name|| '_if_modified_trg AFTER INSERT OR UPDATE OR DELETE ON ' || tab_name|| ' FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func(); ' AS trigger_creation_query
FROM (
SELECT quote_ident(table_name) as tab_name
FROM information_schema.tables
WHERE table_schema='public'
) AS foo WHERE tab_name||'_if_modified_trg' NOT IN (SELECT tgname from pg_trigger where not tgisinternal))
LOOP
-- can do some processing here
EXECUTE r.trigger_creation_query;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE plpgsql;
Я получаю ошибку - ОШИБКА: переменная цикла из цикла по строкам должна быть запись или строку переменной или список скалярных переменных
Существует дубликатом вопрос я ответил вчера: HTTP://stackoverflow.com/questions/39229079/check-if-trigger-exists/39229576#39229576 –