안녕하세요
데이터 업데이트쿼리의 에러때문에 질문드립니다.
지금 작성한 쿼리는 다음과같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | update ( select a. no , a.st, a.dt, ,a.cdt from tb a, tb b , tb c where 1=1 and a, no = b. no (+) and a. no = c. no (+) and a.st= '55' and a,cdt is not null and c. no is null and a. no like 'shop%' ) set st= '82' ; |
여기서 a와 c에 st컬럼이 둘다 존재하여 발생하는것같은데 해결이 되질않습니다...
뷰 업데이트가 아예 불가능한 것은 아니고
몇가지 제약사항을 만족한다면 뷰 업데이트도 가능합니다.
http://gurubee.net/article/79308
위의 경우엔 b 를 왜 조인하는지 이유를 모르겠고? --> 조인 제거 필요
a 와 c 와의 관계가 1:1 또는 다:1 이면 업데이트 가능합니다.
조인 키인 c.no 에 PK 가 설정되어 있어야 합니다.
그런데?? 다시 보니 쿼리가 이상하네요? a, b, c 가 같은 테이블인가요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | merge into tb a using ( select a. no ,a.st ,a.dt ,a.ct from tb a , tb b , tb c where 1=1 and a, no = b. no (+) and a. no = c. no (+) and a.st= '55' and a,cdt is not null and c. no is null and b. no is not null and a. no like 'shop%' ) b on (a. no = b. no ) when matched then update set st= '82' ; |
이렇게 해결했습니다.
우리집 아찌님 ,마농님 답변 감사드립니다.
중간에 b조건을 뺴먹어서 마농님께 혼란을 드린것같네요
a b c 각기 다른테이블이었습니다.