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

Pelanggaran batasan unik selama penyisipan:mengapa? (Peramal)

Agaknya, karena Anda tidak memberikan nilai untuk DB_ID kolom, nilai tersebut diisi oleh tingkat baris sebelum pemicu penyisipan yang ditentukan pada tabel. Pemicu itu, mungkin, adalah memilih nilai dari sebuah urutan.

Karena data dipindahkan (mungkin baru-baru ini) dari basis data produksi, taruhan saya adalah ketika data disalin, urutannya juga tidak diubah. Saya kira urutannya menghasilkan nilai yang jauh lebih rendah daripada DB_ID terbesar yang saat ini ada di tabel yang mengarah ke kesalahan.

Anda dapat mengkonfirmasi kecurigaan ini dengan melihat pemicu untuk menentukan urutan mana yang digunakan dan melakukan

SELECT <<sequence name>>.nextval
  FROM dual

dan membandingkannya dengan

SELECT MAX(db_id)
  FROM cmdb_db

Jika, seperti yang saya duga, urutan menghasilkan nilai yang sudah ada di database, Anda dapat menambah urutan hingga menghasilkan nilai yang tidak digunakan atau Anda dapat mengubahnya untuk mengatur INCREMENT untuk sesuatu yang sangat besar, dapatkan nextval sekali, dan atur INCREMENT kembali ke 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan tiga gaji tertinggi di tabel emp di oracle?

  2. Perbaikan jalur terbang melempar FlywaySqlException dengan Oracle DB

  3. Tindak lanjut T:Bandingkan Baris di Tabel Oracle dan perbarui Baris yang Cocok

  4. Mengapa saya mendapatkan kesalahan java.lang.AbstractMethodError:oracle.jdbc.driver.OracleConnection?

  5. Oracle dinamis DESC dan ASC diurutkan oleh