Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Vi phạm ràng buộc duy nhất trong quá trình chèn:tại sao? (Oracle)

Có lẽ, vì bạn không cung cấp giá trị cho DB_ID , giá trị đó đang được điền bởi một cấp hàng trước khi trình kích hoạt chèn được xác định trên bảng. Trình kích hoạt đó, có lẽ, đang chọn giá trị từ một chuỗi.

Vì dữ liệu đã được di chuyển (có lẽ là gần đây) khỏi cơ sở dữ liệu sản xuất, tôi đặt cược là khi dữ liệu được sao chép, trình tự cũng không bị sửa đổi. Tôi đoán rằng trình tự đang tạo ra các giá trị thấp hơn nhiều so với DB_ID lớn nhất hiện có trong bảng dẫn đến lỗi.

Bạn có thể xác nhận nghi ngờ này bằng cách xem trình kích hoạt để xác định trình tự nào đang được sử dụng và thực hiện

SELECT <<sequence name>>.nextval
  FROM dual

và so sánh với

SELECT MAX(db_id)
  FROM cmdb_db

Theo tôi nghi ngờ, nếu chuỗi đang tạo ra các giá trị đã tồn tại trong cơ sở dữ liệu, bạn có thể tăng chuỗi cho đến khi nó tạo ra các giá trị không sử dụng hoặc bạn có thể thay đổi nó để đặt INCREMENT thành một thứ gì đó rất lớn, lấy giá trị tiếp theo một lần và đặt INCREMENT quay lại 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. Hợp nhất / Kết hợp nhiều tệp PDF thành một tệp PDF trong Oracle bằng gói PLPDF_TOOLKIT PL / SQL

  2. Cài đặt phần mở rộng oci8 trong Linux cho php?

  3. SQL trong so với giao điểm

  4. Làm thế nào để Kiểm tra Hoạt động Cơ sở dữ liệu mà không có Vấn đề về Hiệu suất và Khả năng Mở rộng?

  5. Làm thế nào để vượt qua một vi phạm ràng buộc duy nhất?