2012-02-07 3 views
0

다음 업데이트가 있지만 수동으로 값을 복사하지 않으려합니다. 쿼리를 사용하여 추출하는 것을 선호합니다. PL/SQL을 사용해야합니까 아니면 SQL 형식이 있습니까?오라클 : 다른 테이블의 값을 사용하여 업데이트

수동으로 업데이트에 복사 한 값을 얻기 위해 사용하는 쿼리는 키 보존이 아닙니다 ("조인 뷰의 키 보존 테이블 개념").

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'했다는 설명이 있습니까를? 그리고 그 견해는 키 보존되지 않았는가? 이는 오라클이 update 문을 발행 할 때 하나 이상의 기본 테이블에서 어떤 행을 업데이트 할 것인지 결정할 수 없음을 의미합니다. 보기를 키 보존으로 만들 수 있습니까? 기본 테이블을 업데이트 할 수 있습니까? 테이블의 어떤 행을 업데이트 할 것인지를 결정할 수있는 뷰에 'INSTEAD OF UPDATE' 트리거를 만들 수 있습니까? –

+1

가능한 복제본 [각 테이블의 행을 한 테이블의 데이터를 사용하여 다른 테이블의 데이터로 업데이트] (http://stackoverflow.com/questions/7918688/update-rows-in-one-table-with-data) from-another-table-on-one-column-in-eac) – Allan

+0

저스틴 케이브의 경우 : 아니오, 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; 
관련 문제