2012-02-07 12 views
0

私は次のUpdateを取得しましたが、値を手動でコピーしたくありません。 私はクエリを使用してそれらを抽出することを好む。 PL/SQLを使用すべきですか、それともSQL形式がありますか?Oracle:他のテーブルの値を使用して更新

私が更新に手動でコピーした値を取得するために使用するクエリは、キー保存ではありません(「結合ビューのキー保存されたテーブル概念」)。

UPDATE wkf_cronologia 
    SET swkf_stato_workflow_id = 'o3gE1tlSdcDIC6FF', 
     swkf_data_ini = TO_TIMESTAMP ('19-06-2010 18:28:10,556000000','DD-MM-RRRR HH24:MI:SS,FF'), 
     swkf_versione = 0, 
     SPWKF_STATO_PUBBLICO_ID = '*1UNICOO', 
     SPWKF_DATA_INI = TO_TIMESTAMP ('01-01-0001 00:00:00,000000000', 'DD-MM-RRRR HH24:MI:SS,FF'), 
     SPWKF_VERSIONE = 0 
WHERE wkfc_cronologia_id = 'ApAJ0qCudNphjLxj'; 
+0

を、あなたは 'wkf_cronologia'がビューであることを示すされていますか?そしてその見解は鍵で保護されていないのですか?つまり、Oracleは、更新文を発行するときに、基礎となる表の1つ以上の行で更新する行を判別できません。ビューをキー保存することはできますか?ベーステーブルを更新できますか?テーブルのどの行を更新したいのか分かるビューに 'INSTEAD OF UPDATE'トリガを作成できますか? –

+1

可能な複製[1つのテーブルの行を更新し、それぞれが同じである1つの列に基づいて別のテーブルのデータで更新](http://stackoverflow.com/questions/7918688/update-rows-in-one-table-with-data) from-another-table-on-one-in-eac) – Allan

+0

Justin Caveの場合:いいえ、wkf_cronologiaはテーブルです。多分あなたは私の以前の投稿を読んで理解することができますbettere:http://stackoverflow.com/questions/9164586/oracle-multiple-table-updates-ora-01779-cannot-modify-a-column-which-maps-t/9166046# 9166046I – Revious

答えて

1

あなたは、サブクエリを使用することができます:

UPDATE wkf_cronologia 
    SET (swkf_stato_workflow_id, 
     swkf_data_ini, 
     swkf_versione, 
     SPWKF_STATO_PUBBLICO_ID, 
     SPWKF_DATA_INI, 
     SPWKF_VERSIONE) = (select a,b,0,c,d,e 
          from another_table 
          where something=wkf_cronologia.swkf_stato_workflow_id) 
WHERE swkf_versione is null; 
関連する問題