PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi pemicu PostgreSQL 9.3 untuk dimasukkan ke dalam tabel dengan nama parameter

CREATE FUNCTION log_roll_test()
  RETURNS trigger AS
$func$
BEGIN
   EXECUTE format('INSERT INTO %I SELECT ($1).*'
                , to_char(NEW.updt_ts, '"log"WW'))   -- child table name
   USING NEW;
   RETURN NULL;
END
$func$ LANGUAGE plpgsql;

Anda tidak dapat mereferensikan NEW di dalam string kueri. NEW terlihat di badan fungsi, tetapi tidak di dalam EXECUTE lingkungan. Solusi terbaik adalah meneruskan nilai dalam USING klausa.

Saya juga mengganti to_char(NEW.updt_ts, '"log"WW') yang setara untuk nama tabel. to_char() lebih cepat dan lebih sederhana di sini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skema database relasional untuk sumber acara

  2. Kesalahan SQL saat mencoba membuat pemicu baru

  3. Permintaan rekaman terbaru yang efisien dengan Postgresql

  4. Bagaimana cara melewatkan string dengan ' ' (cap waktu) dalam pernyataan yang disiapkan?

  5. Fungsi untuk Postgresql