Oracle 中merge into不能更新on中的字段

oracle中的更新可以有这几中方式来实现:
1,update
2,merge
3,利用Pl/SQL批量更新

我这里比较update和merge两种更新操作:

首先看update操作:

SQL> Update emp Set deptno = 90 Where deptno In (Select deptno From dept);

14 rows updated.

这里是没有错误的。

merge 操作:

SQL> Merge Into emp a
  2  Using dept_bak b
  3  On (a.deptno = b.deptno)
  4  When Matched Then
  5    Update Set deptno = 90;
On (a.deptno = b.deptno)
    *
ERROR at line 3:
ORA-38104: 无法更新 ON 子句中引用的列: "A"."DEPTNO"

这里可以看到merge操作是无法更新on中的条件字段。

你可能感兴趣的:(sql,trunning)