update문 쓸때 2개의 테이블을 조인하고 2개의 컬럼 값을 변경 할 수 있나요? 0 18 28,209

by 스파이 [2013.04.18 10:04:10]



예를 들어...

update aaa a, bbb b
set
a.ga='gaga', b.na='nana'
wherer
key='123'
and yo='no'
and a.key = b.key
and a. yo = b.yo;

이런식으로 뭔가 수정이 됐으면하는데

다른방식으로 처리 할 수 있는지 알고 싶습니다.

초보라 ㅜㅠ ㄷㄷㄷㄷ...
by 우리집아찌 [2013.04.18 10:07:41]

update 는 한테이블만 되는것 같은데요..
.
프로시져 이용하시는게.

by 스파이 [2013.04.18 10:09:35]
네네 그래서 update 안되는거 아는데 ㅠㅠ
목적은 저거 라는 거예요...
ㅜㅡ 흑... 프로시져 밖에 없을까요??
다른 쿼리로는 안될까요

by 아발란체 [2013.04.18 10:14:01]
가능합니다.

UPDATE (
    SELECT A.GA AS GA, B.NA AS NA FROM AAA A, BBB B WHERE A.KEY = '123' AND A.KEY = B.KEY AND A.YO = B.YO AND YO = 'NO')
SET 
    GA = 'GAGA', NA = 'NANA'

근데 잘못하면 키 보존 어쩌구 에러 뜰거에요.
그건 조건식에 들어간 항목들이 키 값이 아닐 때 발생하는 에러입니다.
테이블간에 키 값으로 맺어주는 식이 없을 때 발생합니다.

by 스파이 [2013.04.18 10:17:31]
오오~~ 한번 테스트 해보겠습니다 ㅎㅎ ^^

by 우리집아찌 [2013.04.18 10:16:26]

trigger 걸어야하나 생각했는데..
놀랍네요..

by 아발란체 [2013.04.18 10:22:05]
--예를 올리면 다음과 같습니다.
--여기서 한쪽 테이블이 키가 없거나, 업데이트문에 키 값으로 맺어주는 식이 없으면 에러납니다.
CREATE TABLE A(
  F1 INT PRIMARY KEY,
  F2 VARCHAR2(10)
);

CREATE TABLE B(
  F1 INT PRIMARY KEY,
  F2 VARCHAR2(10)
);

INSERT INTO A VALUES(1, 'B');
INSERT INTO B VALUES(1, 'C');

UPDATE (
  SELECT
    A.F1 V1, A.F2 V2, B.F1 V3, B.F2 V4 FROM A, B WHERE A.F1 = B.F1 AND A.F2 = 'D'
)
SET 
  V4 = '4'
;

by 디케이 [2013.04.18 10:25:55]
우와....  조인결과를 가지고 update가 되는가 보네요..

하나 배웠네요. 감사합니다.

by 부쉬맨 [2013.04.18 10:35:37]
프로시저만들기는 귀찮고 할대는
declare로 처리를...

by 스파이 [2013.04.18 10:37:53]
ㅠㅜ 흙... 그렇네요 ...
ora-01779: 키-보존된것이 아닌 테이블로 대응한 열을 수정할 수 없습니다.

라는 메시지가 뜨네요 ㅠㅠ 흑...

by 마농 [2013.04.18 10:44:25]

헐... 왜들 이러세요 @,.@
왜 다들 되는 분위기로 몰아가고 있는 거죠?
안됩니다.
조인뷰에 대한 업데이트는 한개 테이블만 가능합니다.
두개 테이블 모두를 업데이트 할 수 없습니다.


by 스파이 [2013.04.18 10:47:37]
아... ㅜㅡ 이런 세상에... ㅠㅠ 아... 안되는건가요?? ㅠㅠ 흑

by 아린 [2013.04.18 10:49:58]
보통 trigger 나 프로시져로 많이들 작성하는데,  

꼭 한번에 해야될 이유가 있나요?

by 손님 [2013.04.18 11:04:37]

트랜잭션으로 두개에 테이블에 넣어시면 될잖아요??;;


by 아발란체 [2013.04.18 11:14:00]
죽을죄를, 죄송합니다.
사용한지 오래되서 했었던 걸로 기억했어요.

by 디케이 [2013.04.18 11:19:04]

ㅎㅎ 안되는가 보네요...


by 아발란체 [2013.04.18 11:40:56]
아, MySQL 이네요.
오라클은 Multi-Table Inserts만 지원하지만,
MySQL은 Multi-Table Update도 지원하네요.

즉 MySQL은 조인뷰에 대한 업데이트 1개 이상 테이블도 지원합니다.
혹시 몰라 테스트까지 했는데 잘 되네요.

by 스파이 [2013.04.18 11:50:46]
아... ㅎㅎ 아니면 업데이트문을 부르는걸 두번 부르게 해야 겠네요 ㅎㅎ;;;

ㅠㅠ 흑.... 오랜시간동안 감사 합니다 ^^ㅎ

by 아발란체 [2013.04.18 11:59:40]
죄송합니다, 별 도움이 안되었네요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입