[MySQL]Updatable Join View

2015. 12. 3. 11:37·프로젝트 관련 조사/DB
반응형

 출처: http://blackbull.tistory.com/9

 

 

 

 

MySQL에서의 Sub Query의 더러운 진면목을 경험해 본 기억이 있기에,
(하루 온종일 돌려도 결과가 안 나와서 걷어찰 뻔 했다는...-_-;;)
요즘 모든 Sub Query들을 JOIN을 이용하여 해결하기 위해 노력한다.

그런데!!! 두둥!!
이런 뒌장.... 평소에 잘 돌아가던 코드가 Oracle에서는 안 돌아가더라....
'!$!@%$%!#$ㅆㄲㄸㅎㄹㅇㅎ!#!@#' 라고 욕을 잔뜩 하고 난 다음..
고민이 들더라..

많은 양의 데이터를 Migration 하기 위해 미리 짜 놓은 Query가,
쓰레기가 되는 상황이 벌어졌으니....
'뭐.. 아직은 시간이 남았으니 해결책을 마련해 보자.'
라고 하다가,

언제나처럼, 내 옆에 계시는 '고수'님의 파워를  빌어 내었다..

물론, 설명을 듣고 난 후에 오라클을 향해 다시 한 번
'*@$@#$@ㅎㅎㄲㄸㅎㅃㅎㄸㄲㅎ#$!$'
라고 해주는 것 또한 잊지 않았다눙~~

아.. 그런데 욕하다 보니 생각났다....
'내가 무식한 거구나 --;; !$%!$#%#$#!@#ㅇㅀㄶㄸ'

뭐 각설하고, 본론으로 가보장.

********************************************************************
[MySQL 에서의 사용 예]
UPDATE table_a a INNER JOIN table_b b ON (a.id = b.id)
SET       a.value = 'MySQL이 아직 공짜라 좋다!!'
WHERE  a.check_point = 'N';
********************************************************************
요럴 경우, 우리의 훌륭한 MySQL은 별다르게 다른 작업을 해주지 않아도,
참 일을 잘해준다.
즉, 쪼인을 건 상태임에도 불구하고, 알아서 해당 테이블의 값을 잘 넣어준다는 말씀.

그런데, 오라클을 함 보장.
********************************************************************
[Oracle 에서의 사용 예]
UPDATE table_a a INNER JOIN table_b b ON (a.t_id = b.t_id)
SET       a.t_value = 'Oracle 아따따 뿌우겐!!'
WHERE  a.t_check_point = 'N';
********************************************************************
요러면... 에러난다..
왜? UPDATE 구문에 들어갈 녀석의 JOIN이 되지 않기 때문이다.
Oracle 曰... 'SET 어딨냐?' --;;

그럼... 일보 후퇴하여, 궁극 병기 서브쿼리의 형식으로 쥐어짜 보자.
********************************************************************
[Oracle 에서의 사용 예]
UPDATE (SELECT a.t_value, a.t_check_point
             FROM table_a a INNER JOIN table_b b ON (a.t_id = b.t_id)
             ) x
SET       x.t_value = 'Oracle 아따따 뿌우겐!!'
WHERE  x.t_check_point = 'N';
********************************************************************
쓰읍... 결과는?  당근 된다..

그럼 한 가지 더...

저번에 오라클 10g AdminWorkshop 과정 때 강사님께,
'혹시 위와 같은 상황에서, 실제로 업데이트가 가능한 컬럼들을 알 수 있을까요?'
라고 여쭈어보니, 하루 있다 말씀 주신 것이...

'오라클에는 ALL_UPDATABLE_COLUMNS, USER_UPDATABLE_COLUMNS 라는 테이블이 있다.'

ALL_UPDATABLE_COLUMNS는 생성된 VIEW의 속성값 변경 가능 여부를
표시하는 시스템 테이블이고, USER_UPDATABLE_COLUMNS는 유저에게 종속된 VIEW의
속성 변경 가능 여부를 표시해준다.


하지만, 저것만으로는 매번 뷰를 생성해서 확인해 봐야 하는 중노동(?)이 필요하다.
뭔가 다른 방법은 없을까?

http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/views001.htm#i1006232

상기 링크를 보면, Updatable Join View 가 되기 위해서는 반드시 해당 View가
Key-preserved Table이여야 하다고 한다.

흠... 그거만 있으면 되는건가?




반응형
저작자표시

'프로젝트 관련 조사 > DB' 카테고리의 다른 글

[MySQL] Mysql Join 해부(Left, Right, Outer, Inner Join)  (0) 2015.12.03
[버클리] 우분투에 버클리 DB 설치  (0) 2015.12.03
[MySQL] DB 테이블 연산자 - JOIN 연산자 (두 개 이상 테이블 간의 비교검색)  (0) 2015.12.03
[MySQL] 다른 데이터베이스의 테이블 복사하기  (0) 2015.12.03
[MySQL] 최근 데이터 가져 오는 구문  (0) 2015.12.01
'프로젝트 관련 조사/DB' 카테고리의 다른 글
  • [MySQL] Mysql Join 해부(Left, Right, Outer, Inner Join)
  • [버클리] 우분투에 버클리 DB 설치
  • [MySQL] DB 테이블 연산자 - JOIN 연산자 (두 개 이상 테이블 간의 비교검색)
  • [MySQL] 다른 데이터베이스의 테이블 복사하기
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    판교
    수제버거맛집
    이재곧죽습니다
    보안가이드
    맛집
    쥬쥬랜드
    수제버거
    수제버거존맛
    무역전쟁
    런치
    대통령
    판교역
    판교맛집
    AWS
    복리후생
    마케팅
    점심
    유니티
    돈까스
    상호관세
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[MySQL]Updatable Join View
상단으로

티스토리툴바