가끔 테이블에 row가 있으면 update를 하고, 없으면 insert 를..

뭐.. 나같은 경우는 종종 있더라.. 지금까지는 아무 생각없이..
select를 하고, 데이터가 없으면 insert, 있으면 update 이런 식으로 개발을 했다.

문뜩.. 궁금하더라.. 과연 이렇게 무식한 방법말고 좋은 방법은 없을까?? 뭐 이런 생각도 있기는 했지만.. 우선 이 방법이  thread safety 하지 않더라.. 여러넘이 동시에 select를 해서 없다고 판단하고.. 여러넘이 동시에 insert를 하니 당근 문제가 발생한다. 자.. 그래서 찾은 넘이 merge 라는 넘이다. 이넘 조건으로 있냐 없냐를 판단해서 insert 나 update를 수행한다. 결론은 이놈도 thread safety 하지 않다. ㅋㅋ

뭐.. 그래도 이넘 유용하게 사용할 수 있어 즐거운 시간이였다. ^^


merge into LOG_TABLE
        using dual
        ON(
           -- 여기서 LOG_TABLE에 row가 있냐 없냐를 찾는다.
                reg_dts             = #regDts#
            and name             = #name#
            and img_size         = #imgSize#
            and position          = #position#   
            and type               = #type#
        )       
        WHEN MATCHED THEN  
          -- 있으면 Update 를 수행하고..
            update set
                click_count =    (    select  (click_count + 1) as click_count
                                    from    LOG_TABLE
                                    where   reg_dts         = #regDts#
                                            and name         = #name#
                                            and img_size     = #imgSize#
                                            and position     = #position# )
        WHEN NOT MATCHED THEN
            -- 없으면 Insert 를 수행한다.
            insert(reg_dts, name, img_size, position, click_count, view_count, mod_dts, type)
            values (#regDts#, #name#, #imgSize#, #position#, #clickCount#, #viewCount#, sysdate, #type# )

위 샘플을 보면 .. 단순히 로그를 저장하는 넘이다.. 뭐.. 가끔 뷰 카운트를 증가시켜야 할때가 있기는 하지만서두..

조건에 해당하는 넘을 찾고.. 있으면 Update, 없으면 Insert ...


'DBMS > oracle' 카테고리의 다른 글

시간차 초 단위로 계산  (0) 2012.06.22
[oracle] - 컬럼생성 스크립트  (0) 2011.06.24
[oracle] - 오라클 버전별 jdbc  (0) 2010.09.17
[oracle] - 소숫점 제거  (0) 2010.07.06
[oracle] - replace  (0) 2010.07.06
Posted by 짱가쟁이
select floor(실수) from table

Posted by 짱가쟁이
2010. 7. 6. 00:05
Eample
select * from table where REPLACE(tel,'-','') = '029022352'

select REPLACE(tel,'-','') from table where tel = '02-902-2352'

전화번호 데이터가 '-' 구분자를 사용하는데... 클라이언트는 '-' 구분자 없이 검색을 하고 싶다고 하네.. 이때 사용하면 유용하다.

다른 좋은 방법이 있으면 누가 좀 알려주면 좋으련만.. 쩌ㅃ~
Posted by 짱가쟁이
이전버튼 1 이전버튼