Работал ли с триггерами в PostgreSQL

Python Senior Без компании
Работал ли с триггерами в PostgreSQL
Ответы
Да, работал. Триггеры в PostgreSQL — это функции, автоматически выполняемые при определенных событиях (INSERT, UPDATE, DELETE и т.д.) в таблице. Они полезны для аудита, валидации данных или поддержания целостности. Пример триггера для логирования изменений в таблице `users`: ``` CREATE OR REPLACE FUNCTION log_user_changes() RETURNS TRIGGER AS $$ BEGIN IF (TG_OP = 'DELETE') THEN INSERT INTO user_audit(user_id, action, change_time) VALUES (OLD.id, 'DELETE', NOW()); ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO user_audit(user_id, action, change_time) VALUES (NEW.id, 'UPDATE', NOW()); ELSIF (TG_OP = 'INSERT') THEN INSERT INTO user_audit(user_id, action, change_time) VALUES (NEW.id, 'INSERT', NOW()); END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER user_changes_trigger AFTER INSERT OR UPDATE OR DELETE ON users FOR EACH ROW EXECUTE FUNCTION log_user_changes(); ``` Важные нюансы: - Триггеры могут быть BEFORE или AFTER (до/после операции) - FOR EACH ROW (для каждой строки) или FOR EACH STATEMENT (для оператора) - RETURN NEW/OLD влияет на поведение при BEFORE-триггерах