title: Update tables when cannot modify a column which maps to a non key-preserved table
body: <pre><code>----- s.op_id= ------
  | S |----------| OP |
  ----- op.op_id ------
                    |
                    | op.op_id = j.op_id
                    |
                  -----
                  | J |
                  -----
  </code></pre>
  
  <p>An oracle database has three tables <code>journey</code>, <code>op_profile</code> and <code>special</code>.</p>
  
  <p><code>journey</code> has two columns <code>journey_id</code> <em>(primary key)</em> and <code>op_id</code>,
  <code>op_profile</code> has primary key <code>op_id</code> and
  <code>special</code> has a column <code>op_id</code> which is a <em>foreign key</em> on <code>op_profile</code> and a further column <code>s_id</code> which is the tables primary key.</p>
  
  <p>I have tried to update all the <code>op_id</code> columns to equal the <code>journey_id</code> column of the <code>journey</code> table with the following sql usin sql developer:</p>
  
  <pre><code>UPDATE (SELECT special.op_id, journey.journey_id, op_profile.op_id AS op
          FROM special, journey, op_profile
          WHERE special.op_id = journey.op_id AND journey.op_id = op_profile.op_id)
  SET op_id = journey_id, op = journey_id;
  </code></pre>
  
  <p>which gives the following error</p>
  
  <pre><code>SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table
  01779. 00000 -  "cannot modify a column which maps to a non key-preserved table"
  *Cause:    An attempt was made to insert or update columns of a join view which
             map to a non-key-preserved table.
  *Action:   Modify the underlying base tables directly.
  </code></pre>
  
  <p>which seems to say that this operation is failing because of the keys of each table.</p>
  
  <p>Is this possible in this way, or another? </p>