PostgreSQL Event Triggers
PostgreSQL Event Triggers is a SQL statement in the PostgreSQL Specific category. PostgreSQL 9.3+: event triggers fire on DDL events (CREATE, ALTER, DROP). Useful for auditing schema changes. The syntax is CREATE EVENT TRIGGER trigger_name ON ddl_command_end WHEN TAG IN ('CREATE TABLE') EXECUTE FUNCTION func();. It returns event trigger. A typical example: CREATE OR REPLACE FUNCTION log_ddl() RETURNS EVENT_TRIGGER LANGUAGE plpgsql AS $ BEGIN INSERT INTO ddl_audit (event_type, object_type, object_name, user_name, occurred_at) VALUES (TG_EVENT, TG_OBJECT_TYPE, TG_TABLE_NAME, current_user, NOW()); END; $; CREATE EVENT TRIGGER trg_log_ddl ON ddl_command_end WHEN TAG IN ('CREATE TABLE', 'ALTER TABLE', 'DROP TABLE') EXECUTE FUNCTION log_ddl(); -- Now all CREATE/ALTER/DROP TABLE are automatically logged -- Tag filtering (available DDL tags): -- 'CREATE TABLE', 'DROP TABLE', 'ALTER TABLE', -- 'CREATE INDEX',… A close relative is SERIAL, which postgreSQL auto-increment type. Creates an INTEGER column with a sequence. Equivalent to AUTO_INCREMENT in MySQL. A close relative is RETURNING, which postgreSQL extension that returns values from INSERT/UPDATE/DELETE statements (like OUTPUT in SQL Server).