sql >> Base de Datos >  >> RDS >> PostgreSQL

Aplique un solo procedimiento de activación a muchas tablas diferentes

Puede encontrar un ejemplo de cómo crear un disparador con SQL dinámico usando PL/PgSQL en Audit Trigger muestra para PostgreSQL. El mismo enfoque funcionará con cualquier otro DDL.

Ver la función audit.audit_table y uso de format y EXECUTE allí.

Dicho esto, la necesidad de crear tablas de manera procesal puede ser (pero no siempre lo es) un signo de diseño de esquema cuestionable.

Ejemplo simple de SQL dinámico creando una tabla:

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;

El mismo enfoque funciona para la creación de disparadores, etc.