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

Nắm bắt các giá trị kích hoạt DUP_VAL_ON_INDEX

Tốt nhất, tôi khuyên bạn nên sử dụng ghi chép lỗi DML. Ví dụ

Tạo bảng nhật ký lỗi

begin
  dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
                                err_log_table_name => 'EMPLOYEE_ERR' );
end;

Sử dụng ghi nhật ký lỗi DML

BEGIN
  insert into employee( id )
    select id 
      from (select '01' id from dual
            union all
            select '02' from dual) 
    log errors into employee_err
        reject limit unlimited;
END;

Đối với mọi hàng không thành công, thao tác này sẽ ghi dữ liệu cho hàng đó vào EMPLOYEE_ERR bảng cùng với ngoại lệ. Sau đó, bạn có thể truy vấn bảng nhật ký lỗi để xem tất cả các lỗi thay vì chỉ nhận được hàng đầu tiên bị lỗi.

Nếu tạo bảng nhật ký lỗi không phải là một tùy chọn, bạn có thể chuyển từ SQL sang PL / SQL với các hoạt động hàng loạt. Điều đó sẽ chậm hơn nhưng bạn có thể sử dụng SAVE EXCEPTIONS mệnh đề của FORALL để tạo một bảng ngoại lệ lồng nhau mà sau đó bạn có thể lặp lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định cấu hình mybatis để sử dụng kết nối hiện có

  2. Specifiy classpath dành cho maven

  3. Kết hợp các khoảng thời gian hiệu lực ngày liên tiếp với nhau

  4. Webrick phản hồi rất chậm. Làm thế nào để tăng tốc độ?

  5. Làm thế nào để lấy tên ngày trong tuần từ một ngày?