PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak dynamicznie utworzyć funkcję wyzwalacza w pgsql?

Dwie sekcje $$ były zdezorientowane. Używając zamiast tego składni $name$, możesz je rozdzielić.

Również w spuście brakowało RETURN.

CREATE OR REPLACE FUNCTION trigen(tbl text) RETURNS void AS $T1$
BEGIN
    EXECUTE format(
    'CREATE FUNCTION %s_insertCnt() RETURNS TRIGGER AS $T2$
    BEGIN
        UPDATE insertions SET n = n + 1 WHERE tablename = %s;
        RETURN NEW;
    END
    $T2$ LANGUAGE plpgsql', tbl, quote_nullable(tbl));

    EXECUTE format('CREATE TRIGGER %s_inCnt BEFORE INSERT ON %s
    FOR EACH ROW EXECUTE PROCEDURE %s_insertCnt();', tbl, tbl, tbl);
    END
$T1$ LANGUAGE plpgsql;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz pierwszą literę w zakresie ( PostgreSQL )

  2. Lewe sprzężenie zewnętrzne działające jak sprzężenie wewnętrzne

  3. docker-compose rails rake db:reset nie powiedzie się, nie można usunąć aktualnie otwartej bazy danych

  4. wartość za długa dla typu znak zmienna(255) dla długości 100000

  5. Zawieś się w skrypcie Pythona przy użyciu SQLAlchemy i wieloprocesowości