Background Image
질의작성
2015.12.31 23:13

ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기

조회 수 6461 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

ORACLE TRIGGER를 CUBRID로 변환한 예제이다.

특이 사항은  Oracle의 경우 한 TRIGGER 내에 여러 SQL를 사용할 수 있지만 CUBRID는 각각 분리하여 작성해야 한다.

또한 INSERT OR UPDATE로 생성된 TRIGGER도 각각 분리해야 한다.


<Oracle Trigger>


create or replace TRIGGER SOA.TR02_TN_SVC_PRCUSE_REQST_INFO


 


 AFTER    


    UPDATE ON SOA.TN_PUBR_SVC_PRCUSE_REQST_INFO         


    FOR EACH ROW


DECLARE


      PRAGMA AUTONOMOUS_TRANSACTION;  


      V_INSTT_CODE VARCHAR2(40) := '';


  


BEGIN


        SELECT INSTT_CODE INTO V_INSTT_CODE


        FROM    TN_PUBR_PUBLIC_DATA_DETAIL


        WHERE   PUBLIC_DATA_DETAIL_PK = :NEW.PUBLIC_DATA_DETAIL_PK;



    IF :NEW.DECSN_MATTER_CODE = 'PSDE02' AND (:NEW.PRCUSE_LMTT_CODE != 'PRCU01' OR :NEW.PRCUSE_LMTT_CODE IS NULL) AND V_INSTT_CODE = '9750000' THEN 



        -- 승인시 신규 회원테이블에 입력한다.          


            INSERT INTO SOAC.TN_PUBR_ATCH_FILE_MANAGE_CI


              (PBLONSIP_RESRCE_PK,


                  SEQ_NO,


                  ATCH_FILE_TY_CODE,


                  ATCH_FILE_ID,


                  ATCH_FILE_USE_AT)


           SELECT PUBLIC_DATA_DETAIL_PK,


                   SEQ_NO,


                   ATCH_FILE_TY_CODE,


                   ATCH_FILE_ID,


                   ATCH_FILE_USE_AT


             FROM SOA.TN_PUBR_ATCH_FILE_MANAGE


            WHERE PUBLIC_DATA_DETAIL_PK = :NEW.PUBLIC_DATA_DETAIL_PK;


       


        -- 오퍼레이션 권한


        INSERT INTO SOAC.TN_PUBR_OPRTIN_AUTHOR_CI


        SELECT  *


        FROM    SOA.TN_PUBR_OPRTIN_AUTHOR


        WHERE   PUBLIC_DATA_DETAIL_PK = :NEW.PUBLIC_DATA_DETAIL_PK


            AND MBER_ID = :NEW.MBER_ID;


     (이하 생략)


<CUBRID TRIGGER>


--create or replace TRIGGER SOA.TR02_TN_SVC_PRCUSE_REQST_INFO


create TRIGGER TR02_TN_SVC_PRCUSE_REQST_INFO1



AFTER UPDATE ON TN_PUBR_SVC_PRCUSE_REQST_INFO


--FOR EACH ROW


--DECLARE


--      PRAGMA AUTONOMOUS_TRANSACTION;


--      V_INSTT_CODE VARCHAR2(40) := '';



--BEGIN



--        SELECT INSTT_CODE INTO V_INSTT_CODE


--        FROM    TN_PUBR_PUBLIC_DATA_DETAIL


--        WHERE   PUBLIC_DATA_DETAIL_PK = :NEW.PUBLIC_DATA_DETAIL_PK;



    IF obj.DECSN_MATTER_CODE = 'PSDE02' AND (obj.PRCUSE_LMTT_CODE != 'PRCU01' OR obj.PRCUSE_LMTT_CODE IS NULL)


       AND '9750000' = (SELECT INSTT_CODE


                        FROM TN_PUBR_PUBLIC_DATA_DETAIL


                        WHERE PUBLIC_DATA_DETAIL_PK = obj.PUBLIC_DATA_DETAIL_PK)


       EXECUTE



       -- 승인시 신규 회원테이블에 입력한다.


            INSERT INTO SOAC.TN_PUBR_ATCH_FILE_MANAGE_CI


              (PBLONSIP_RESRCE_PK,


                  SEQ_NO,


                  ATCH_FILE_TY_CODE,


                  ATCH_FILE_ID,


                  ATCH_FILE_USE_AT)


           SELECT PUBLIC_DATA_DETAIL_PK,


                   SEQ_NO,


                   ATCH_FILE_TY_CODE,


                   ATCH_FILE_ID,


                   ATCH_FILE_USE_AT


             FROM TN_PUBR_ATCH_FILE_MANAGE


            WHERE PUBLIC_DATA_DETAIL_PK = obj.PUBLIC_DATA_DETAIL_PK;



COMMIT;



--create or replace TRIGGER SOA.TR02_TN_SVC_PRCUSE_REQST_INFO


create TRIGGER TR02_TN_SVC_PRCUSE_REQST_INFO2



AFTER UPDATE ON TN_PUBR_SVC_PRCUSE_REQST_INFO


--FOR EACH ROW


--DECLARE


--      PRAGMA AUTONOMOUS_TRANSACTION;


--      V_INSTT_CODE VARCHAR2(40) := '';



--BEGIN



--        SELECT INSTT_CODE INTO V_INSTT_CODE


--        FROM    TN_PUBR_PUBLIC_DATA_DETAIL


--        WHERE   PUBLIC_DATA_DETAIL_PK = :NEW.PUBLIC_DATA_DETAIL_PK;



    IF obj.DECSN_MATTER_CODE = 'PSDE02' AND (obj.PRCUSE_LMTT_CODE != 'PRCU01' OR obj.PRCUSE_LMTT_CODE IS NULL)


       AND '9750000' = (SELECT INSTT_CODE


                        FROM TN_PUBR_PUBLIC_DATA_DETAIL


                        WHERE PUBLIC_DATA_DETAIL_PK = obj.PUBLIC_DATA_DETAIL_PK)


       EXECUTE



        -- 오퍼레이션 권한


        INSERT INTO TN_PUBR_OPRTIN_AUTHOR_CI


         --SELECT  * /* 컬럼 추가 이슈 */


        SELECT  MBER_ID


               ,PUBLIC_DATA_DETAIL_PK


               ,OPRTIN_SEQ_NO


               ,USE_REQST_NO


               ,PROCESS_STTUS_CODE


               ,PROCESS_STTUS_DC


               ,DILY_USE_EXPECT_CO


               ,DILY_USE_CHANGE_RESN


               ,USE_TY


               ,PRCUSE_PURPS


               ,PRCUSE_URL


               ,PRCUSE_PRPOS


               ,PRCUSE_AGRE_AT


               ,OPRTIN_URL


               ,AUTHOR_ENNC


               ,USE_BEGIN_DATE


               ,USE_END_DATE


               ,REGISTER_ID


               ,REGIST_DT


               ,UPDUSR_ID


               ,UPDT_DT


               ,DILY_USE_CHANGE_RESN_CODE


               ,PRCUSE_REQST_SEQ_NO


               ,PRCUSE_LMTT_CODE


               ,PRCUSE_LMTT_RESN


        FROM    TN_PUBR_OPRTIN_AUTHOR


        WHERE   PUBLIC_DATA_DETAIL_PK = obj.PUBLIC_DATA_DETAIL_PK


            AND MBER_ID = obj.MBER_ID;



COMMIT;



  1. 각 테이블 PK 유무 확인 쿼리문

  2. ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기

  3. Cubrid는 어떤 쿼리를 동일한 쿼리로 판단할까?

  4. 일정 범위 임의의 정수 생성 방법(random 함수 응용)

  5. 오라클의 DBMS_RANDOM.STRING() 함수를 CUBRID 식으로 구현하는 방법

  6. 테이블 용량 산정 쿼리

  7. 전체 테이블 UPDATE시 SELECT, UPDATE를 통한 INDEX SCAN방식으로 테이블 X_LOCK을 방지하자!

  8. INSERT수행 시, 현재날짜,현재시각으로 자동 입력하는 방법

  9. CUBRID dummy data생성-간단편

  10. 카디시안(한 Row를 여러 Row) 쿼리문 만들기

  11. SQL튜닝 - 인덱스 활용 사례

  12. A테이블의 다수의 컬럼을 B테이블로 UPDATE 하는 SQL

  13. MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 )

  14. 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법

  15. join update 처리방법입니다.(연관성 있는 테이블을 조인하여 처리하는 UPDATE 구문)

  16. 게시판 응용 중 조회수로 정렬하는 경우 인덱스 생성 방법

  17. 문자(char, varchar)로 설계한 날짜데이타 검증하기

  18. 세부내역과 소계를 한개의 쿼리문장으로 수행하는 SQL

  19. 한건의 데이타를 여러건으로 조회하는 쿼리입니다.

  20. 여러건의 코드명을 한건으로 조회하는 쿼리입니다.

Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales