PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да създадете функция за задействане динамично в pgsql?

Двете $$ секции се объркваха. Като използвате вместо това синтаксиса $name$, можете да ги разделите.

Освен това на тригера липсваше 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. Абстракция на Java база данни за GWT (или:Hibernate добър избор ли е?)

  2. Има ли начин да промените времевите марки по подразбиране на Rails на Y-m-d H:i:s (вместо Y-m-d H:i:s.u) или да накарате laravel да игнорира десетичната част на Y-m-d H:i:s.u?

  3. модулно тестване с база данни в паметта

  4. Откриване и премахване на пропуски във времевите редове

  5. Има ли нещо като функция zip() в PostgreSQL, която комбинира два масива?