Du kan finde et eksempel på oprettelse af en trigger med dynamisk SQL ved hjælp af PL/PgSQL i Audit Trigger prøve til PostgreSQL. Den samme tilgang vil fungere med enhver anden DDL.
Se funktionen audit.audit_table
og brug af format
og EXECUTE
der.
Når det er sagt, kan behovet for at oprette tabeller proceduremæssigt være (men er ikke altid) et tegn på tvivlsomt skemadesign.
Simpelt eksempel på dynamisk SQL oprettelse af en tabel:
CREATE OR REPLACE FUNCTION demo_dynamic_table(tablename text) RETURNS void AS $$
BEGIN
EXECUTE format('CREATE TABLE %I (id serial primary key);', tablename);
END;
$$ LANGUAGE plpgsql;
Den samme tilgang virker til trigger-oprettelse osv.