title: ORA-38104: Columns referenced in the ON Clause cannot be updated
body: <p>i have a simple table with a delete-flag (records should be updated in this column instead of deleted):</p>
  
  <pre><code>create table PSEUDODELETETABLE
  (
    ID        NUMBER(8) not null, -- PKEY
    NAME      VARCHAR2(50) not null,
    ISDELETED NUMBER(1) default 0 not null
  )
  </code></pre>
  
  <p>When inserting new records I must check, whether there is already a record matching the primary key but having ISDELETED = 1. In that case I must change ISDELETED to 0 and update the other columns. Therefore I'm using the following Merge-Statement:</p>
  
  <pre><code>merge into ET.PSEUDODELETETABLE TARGET
  using (select 1 as ID, 'Horst' as NAME from sys.dual) SOURCE
  on (TARGET.ISDELETED = 1 and SOURCE.ID = TARGET.ID)
  when matched then
    update set ISDELETED = 0, NAME = SOURCE.NAME
  when not matched then
    insert values (SOURCE.ID, SOURCE.NAME, 0);
  </code></pre>
  
  <p>On Sql-Server it works great, but Oracle says:</p>
  
  <pre><code>ORA-38104: Columns referenced in the ON Clause cannot be updated: TARGET.ISDELETED
  </code></pre>
  
  <p>If there is a matching record with IDELETED = 0, I want the primary key violation as an exception, that's why I can't move "TARGET.ISDELETED = 1" from the on-clause to the update-statement.</p>