sql >> Database teknologi >  >> RDS >> PostgreSQL

Anvend en enkelt udløserprocedure på mange forskellige tabeller

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.



  1. Hvordan udfører man en rækkelås?

  2. Når jeg tilføjer xx til mysql float kolonne, er det forkert resultat, er det en fejl?

  3. Hvordan gemmer man ikke-engelske tegn?

  4. Kompilere PHP 5.1.6 med PDO MySQL