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

Lý do xóa ORA-01422:tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu

Ngoại lệ này được đưa ra bất cứ khi nào một câu lệnh SELECT INTO được thực thi và tìm thấy nhiều hơn một hàng. Câu lệnh SELECT INTO dự kiến ​​sẽ tìm thấy chính xác một hàng, không nhiều hơn hoặc ít hơn - nếu không sẽ xuất hiện một ngoại lệ.

Trong ví dụ của bạn:

select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;

có vẻ như chỉ nên có một hàng cho mỗi kết hợp (KEYVALUE, CATEGORY_FK), nhưng trên thực tế không phải như vậy. Nếu chỉ nên có một thì bảng phải có một ràng buộc duy nhất đối với các cột đó:

alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
    unique (KEYVALUE, CATEGORY_FK);

Điều đó sẽ ngăn ai đó (hoặc một số quy trình) thêm lại cùng một hàng. Tất nhiên, bạn cần phải khử trùng lặp bảng trước khi có thể thêm ràng buộc đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm cách nào để thực thi một hàm từ TOAD cho Oracle và liên kết kết quả với một lưới dữ liệu

  2. Sql kết hợp hai cột thành một biến

  3. Codeigniter và oracle undefined hằng số:OCI_COMMIT_ON_SUCCESS

  4. Truy vấn các chuỗi con so với danh sách các giá trị

  5. Không thể kết nối với Oracle bằng tns