ORA-30926:无法在源表中获得稳定的行集 [英] ORA-30926: unable to get a stable set of rows in the source tables

查看:956
本文介绍了ORA-30926:无法在源表中获得稳定的行集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到

ORA-30926:无法在源表中获得稳定的行集

ORA-30926: unable to get a stable set of rows in the source tables

在以下查询中:

  MERGE INTO table_1 a
      USING 
      (SELECT a.ROWID row_id, 'Y'
              FROM table_1 a ,table_2 b ,table_3 c
              WHERE a.mbr = c.mbr
              AND b.head = c.head
              AND b.type_of_action <> '6') src
              ON ( a.ROWID = src.row_id )
  WHEN MATCHED THEN UPDATE SET in_correct = 'Y';

我已经运行了table_1它具有数据,而且我已经运行了内部查询(src)也具有数据.

I've ran table_1 it has data and also I've ran the inside query (src) which also has data.

为什么会出现此错误,如何解决?

Why would this error come and how can it be resolved?

推荐答案

这通常是由USING子句中指定的查询中的重复项引起的.这可能意味着TABLE_A是父表,并且多次返回相同的ROWID.

This is usually caused by duplicates in the query specified in USING clause. This probably means that TABLE_A is a parent table and the same ROWID is returned several times.

您可以通过在查询中使用DISTINCT来快速解决问题(实际上,如果'Y'是一个常量值,则甚至不需要在查询中放入它).

You could quickly solve the problem by using a DISTINCT in your query (in fact, if 'Y' is a constant value you don't even need to put it in the query).

假设您的查询正确(不知道您的表),则可以执行以下操作:

Assuming your query is correct (don't know your tables) you could do something like this:

  MERGE INTO table_1 a
      USING 
      (SELECT distinct ta.ROWID row_id
              FROM table_1 a ,table_2 b ,table_3 c
              WHERE a.mbr = c.mbr
              AND b.head = c.head
              AND b.type_of_action <> '6') src
              ON ( a.ROWID = src.row_id )
  WHEN MATCHED THEN UPDATE SET in_correct = 'Y';

这篇关于ORA-30926:无法在源表中获得稳定的行集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆