====== Event trigger ====== В PostgreSQL є два типи трігерів: звичайні та event trigger. Останні живуть на рівні бази даних і можуть бути призначені на подію створення таблиці серед іншого. Далі буде тригер, який для будь-якої новоствореної таблиці змінює owner на визначеного. ===== Змінити поточного користувача на суперюзера ===== SET ROLE rds_superuser; ===== Створити функцію-обробник ===== CREATE OR REPLACE FUNCTION auto_owner() RETURNS event_trigger LANGUAGE plpgsql AS $$ -- Function used in trigger on new table creation. Updates table owner DECLARE new_owner CONSTANT varchar := 'admin_staging'; obj record; BEGIN FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() WHERE command_tag in ('CREATE TABLE','CREATE TABLE AS') LOOP EXECUTE format('ALTER TABLE %s OWNER TO %s', obj.object_identity, new_owner); END LOOP; END; $$; ===== Створити тригер ===== CREATE EVENT TRIGGER auto_update_table_owner ON ddl_command_end WHEN tag IN ('CREATE TABLE', 'CREATE TABLE AS') EXECUTE FUNCTION auto_owner();