Przykład tworzenia wyzwalacza z dynamicznym SQL przy użyciu PL/PgSQL można znaleźć w Wyzwalaczu audytu przykład dla PostgreSQL. To samo podejście będzie działać z każdym innym DDL.
Zobacz funkcję audit.audit_table
i użycie format
i EXECUTE
tam.
To powiedziawszy, konieczność proceduralnego tworzenia tabel może być (ale nie zawsze) oznaką wątpliwego projektu schematu.
Prosty przykład dynamicznego SQL tworzenia tabeli:
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;
To samo podejście działa w przypadku tworzenia wyzwalaczy itp.