Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pemicu dengan pernyataan Gabung di oracle

Anda memiliki semua data sumber yang tercampur dalam pernyataan gabungan Anda, saya kira. Anda hanya ingin mempertimbangkan baris yang dimasukkan, bukan?

Saya pikir pemicu Anda harus seperti:

CREATE OR REPLACE TRIGGER test_tri
   after INSERT
   ON test1
   FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
   DECLARE
   PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   IF INSERTING
   THEN
        MERGE INTO test_hist hist
        USING (select :new.package_id, :new.col1, :new.col2, :new.col3, :new.col4, :new.col5
               from   dual) t1
          ON (t1.PACKAGE_ID=hist.PACKAGE_ID)
        WHEN MATCHED THEN
          UPDATE SET hist.col5=t1.col5
        WHEN NOT MATCHED THEN
          INSERT (col1, col2, col3, col4, col5)
          VALUES (t1.col1, t1.col2, t1.col3, t1.col4, t1.col5);
   END IF;  
   COMMIT;
END;
/

N.B. jika :new.col5 adalah kolom tanggal, maka ubah:

FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')

untuk

FOR EACH ROW WHEN (NEW.col5 >= to_date('01/05/2016', 'dd/mm/yyyy'))

Tahun memiliki 4 digit (saya sudah menduga bahwa yang Anda maksud adalah 2016, dan bukan 1916!).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah kita memiliki 2 Ketergantungan Oracle yang berbeda dari 2 database yang berbeda dalam satu aplikasi asp.net?

  2. Gabungkan kueri yang mengembalikan ORA-30926:tidak bisa mendapatkan set baris yang stabil di tabel sumber

  3. SQLT dan Partisi

  4. cara mengirim email dengan Pl/sql

  5. Bagaimana cara mengatur LINESIZE dan PAGESIZE dengan variabel substitusi?