DBAtlas · 数据库运维图谱

ORA-30926: unable to get a stable set of rows in the source tables(无法在源表中获得一组稳定的行)

Oracle

含义

在 MERGE(或可更新连接)语句中,源端为同一目标行产生了多个匹配行。Oracle 无法决定用哪个源值更新,因此停止了操作。

原因

MERGE ... USING 的源中包含 ON 条件的重复匹配;源查询在目标键上不唯一;多个源行映射到同一目标行。

解决方法

使源查询在目标键上唯一。查找重复匹配:SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; 用 DISTINCT 或聚合/分析函数(ROW_NUMBER)对源去重,然后重新运行 MERGE。确保 ON 条件具有足够的选择性。

在 DBAtlas 中打开 →

同一数据库的其他条目