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

Wyzwalacz PostgreSQL do dynamicznego generowania kodów dla wielu tabel

Byłbym bardzo entuzjastyczny, gdybym się mylił (czasami sam też tego potrzebuję), ale najlepiej jestem świadomy, że odwoływanie się do nazw kolumn za pomocą zmiennych jest jednym z tych przypadków, w których faktycznie musisz użyć wyzwalaczy PL/C zamiast PL/ Wyzwalacze PgSQL. Przykłady takich wyzwalaczy znajdziesz w contrib/spi i na PGXN.

Alternatywnie nazwij swoje kolumny spójnie, aby móc bezpośrednio się do nich odwoływać, np. NEW.tenant_code .

Osobiście zazwyczaj piszę funkcję, która tworzy wyzwalacz:

create function create_tg_stuff(_table regclass, _args[] text[])
  returns void as $$
begin
  -- explore pg_catalog a bit
  execute $x$
  create function $x$ || quote_ident(_table || '_tg_stuff') || $x$()
    returns trigger as $t$
  begin
    -- more stuff
    return new;
  end;
  $t$ language plpgsql;
  $x$;
end;
$$ 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. SQLException:ten zestaw wyników jest zamknięty

  2. Jak wypełnić brakujące daty w PostgreSQL za pomocą generate_series

  3. Jak wykonać kopię zapasową bazy danych postgresql z poziomu psql?

  4. Przekazywanie param do DB .execute dla listy WHERE IN... INT

  5. Heroku i Rails:Gem Load Error w Postgresie, jednak jest określony w GEMFILE