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

ORA-30926:không thể có được tập hợp hàng ổn định trong bảng nguồn khi Hợp nhất bảng

Đó là một trường hợp hơi phức tạp. Lý do chính là bạn dường như có các bản sao trong cột TMP_DP_REGIAO.DS_PROTHEUS_CODE và MERGE cố gắng cập nhật cùng một hàng của bảng đích nhiều lần. Nhưng nếu giá trị mới và giá trị cũ trong các cột cập nhật giống nhau, Oracle có thể bỏ qua vấn đề trùng lặp này:

SQL> select * from t;

      CODE TEXT                                                                 
---------- ----------                                                           
         1 test                                                                 

SQL> merge into t using (
  2   select 1 code,'test' text from dual union all
  3   select 1 code,'test' text from dual
  4  ) s
  5  on (t.code = s.code)
  6  when matched then
  7    update set t.text = s.text
  8  /

2 rows merged 

Nhưng nếu các giá trị cũ và mới khác nhau thì Oracle đưa ra trường hợp ngoại lệ mà bạn nhận được:

SQL> merge into t using (
  2   select 1 code,'a' text from dual union all
  3   select 1 code,'a' text from dual
  4  ) s
  5  on (t.code = s.code)
  6  when matched then
  7    update set t.text = s.text
  8  /
merge into t using (
           *
error in line 1:
ORA-30926: unable to get a stable set of rows in the source tables 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm một giá trị trong giá trị cột lưu trữ các giá trị được phân tách bằng dấu phẩy

  2. Oracle:Cập nhật cột bảng bằng ROWNUM kết hợp với mệnh đề ORDER BY

  3. Tạo bộ hẹn giờ trong Oracle Forms / Forms 6i và hiển thị đồng hồ

  4. Sử dụng CONTINUE trong vòng lặp để tiếp tục điều khiển trong Oracle

  5. Oracle Entity Framework - Tạo thực thể từ các bảng trong các lược đồ khác nhau