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

Oracle Setara dengan MySQL INSERT IGNORE?

Lihat pernyataan MERGE. Ini harus melakukan apa yang Anda inginkan - ini adalah WHEN NOT MATCHED klausa yang akan melakukan ini.

Lakukan untuk Oracle kurangnya dukungan untuk klausa VALUES() yang benar, sintaks untuk satu catatan dengan nilai tetap cukup kikuk:

MERGE INTO your_table yt
USING (
   SELECT 42 as the_pk_value, 
          'some_value' as some_column
   FROM dual
) t on (yt.pk = t.the_pke_value) 
WHEN NOT MATCHED THEN 
   INSERT (pk, the_column)
   VALUES (t.the_pk_value, t.some_column);

Pendekatan yang berbeda (jika Anda misalnya melakukan pemuatan massal dari tabel yang berbeda) adalah dengan menggunakan fasilitas "Error logging" dari Oracle. Pernyataannya akan terlihat seperti ini:

 INSERT INTO your_table (col1, col2, col3)
 SELECT c1, c2, c3
 FROM staging_table
 LOG ERRORS INTO errlog ('some comment') REJECT LIMIT UNLIMITED;

Setelah itu semua baris yang akan melontarkan kesalahan tersedia di tabel errlog . Anda perlu membuat errlog itu tabel (atau nama apa pun yang Anda pilih) secara manual sebelum menjalankan penyisipan menggunakan DBMS_ERRLOG.CREATE_ERROR_LOG .

Lihat manual untuk detailnya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengaktifkan logging untuk pernyataan SQL saat menggunakan JDBC

  2. Oracle:Pencarian teks lengkap dengan kondisi

  3. 5 kueri SQL teratas yang memakan waktu di Oracle

  4. Bagaimana Mendapatkan BLOB dari File di PL/SQL?

  5. Perbarui baris dalam satu tabel dengan data dari tabel lain berdasarkan satu kolom di masing-masing menjadi sama