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

Migrasi pemicu dari Oracle 11g ke Postgresql 8.4

Pemicu di Postgres tidak memberikan kode pemicu secara langsung, tetapi memanggil fungsi pemicu , yang dapat dipanggil dari sejumlah pemicu, meskipun sering kali pemicu tersebut disesuaikan untuk satu peristiwa tertentu pada satu tabel tertentu.

Fungsi pemicu:

CREATE OR REPLACE FUNCTION trg_some_tbl_foo()
  RETURNS trigger AS
$func$
BEGIN

INSERT INTO some_tbl(key, name, describe)   -- or some_other_tbl?
VALUES (OLD.key, OLD.name, OLD.describe);

RETURN OLD;

END
$func$ LANGUAGE plpgsql 

Pemicu:

CREATE TRIGGER foo         -- not:  "CREATE OR REPLACE" !
AFTER UPDATE OR DELETE ON some_tbl
FOR EACH ROW EXECUTE PROCEDURE trg_some_tbl_foo()
  • Jadikan AFTER pemicu untuk menyederhanakan. Sebuah BEFORE pemicu harus RETURN NEW untuk membuat pembaruan berfungsi, tetapi NEW tidak terlihat dalam DELETE pemicu. Jadi, Anda perlu IF TG_OP = ... dll.

  • Selalu berikan daftar target untuk INSERT yang bertahan pernyataan. Ini sama buruknya dengan pemicu Oracle.

  • Anda mungkin memiliki tabel dengan serial kolom. Jangan menyebutkannya di sisipan, id berikutnya dari urutan dimasukkan secara otomatis.

Ada banyak contoh kode di sini di SO.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalasi PostgreSQL 9.1 dan pengkodean basis data

  2. Batasan nama kolom tabel Postgres?

  3. Memformat Tanggal (YY:MM:DD:Waktu) di Excel

  4. Transaksi JDBC dengan input pengguna

  5. Mengapa PostgreSQL memanggil fungsi STABLE/IMMUTABLE saya beberapa kali?