Background Image

FORUM

조회 수 281 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

안녕하세요 큐브리드를 사용해서 개발중인데요.


트리거 이벤트 시점 관련해서 질문이 있습니다


생성하려는 트리거는 


A 라는 DB의 TEST테이블의 업데이트가 발생이 되면

B 라는 외부DB의 TEST테이블(동일스키마)을 동기화 시키려는 트리거입니다.


트리거의 실행부분은 javaSP로 구현하였구요. 제가 작성한 SP만 CALL하면 잘 동작하는데 트리거에서 돌릴 때 트랜잭션에 관한 문제가 발생합니다.


javaSP로직은 해당 테이블의 pk를 던져주면 

pk에 해당하는 레코드를 A DB에서 select하여 B db에 update치는 로직입니다.



CREATE TRIGGER updateTrigger

DEFERED UPDATE ON TEST

EXECUTE DEFERED javaSP


이런식으로 트리거를 생성 이후 TEST테이블에 UPDATE문을 

1번 발생시키면 B DB에 레코드가 업데이트 되지않고

2번 발생시켜야 B DB에 업데이트가 됩니다.



아마 javaSP에서 A DB에 업데이트 된 레코드를 SELECT하는 시점에서, 트리거에 걸려 COMMIT 되지 않아 똑같은 값을 update하는 것으로 보여지는데요


update이벤트가 완전히 완료 된 시점에서 트리거의 실행부를 실행시킬 수 있는 이벤트 시점은 없나요??


(참고로 AFTER,BEFORE 다 테스트해봤습니다. 결과는 같습니다, 

또한 insert 동기화 트리거는 위와 같은 맥략의 로직인데, DEFERED 키워드를 주었을때 바로 해결되었었습니다. 근데 update는 안되네요 ㅠ 무슨차이인지...)

  • ?
    안녕하세요.

    Trigger에서 INSERT, UPDATE에 대해 모두 이벤트 시점을 DEFERRED로 설정하시면 됩니다.
    이벤트 시점을 DEFERRED로 만들었을 때 A라는 DB에서 COMMIT 되는 데이터만 B라는 DB에 반영됩니다.

    그리고 Java SP에서는 A라는 DB에 Connection을 가져올 때 "jdbc:default:connection:"으로 가져와야 합니다
    A라는 DB에서 올리는 Java SP는 "jdbc:default:connection:"으로 A라는 DB에 연결할 수 있습니다.

    * 변경 전 : Connection connection = DriverManager.getConnection("jdbc:cubrid:192.168.1.7:40730:demodb:::", "dba", "");
    * 변경 후 : Connection connection = DriverManager.getConnection("jdbc:default:connection:");

    Java SP에서 B라는 DB에 붙어서 데이터 동기화 하실 때문 변경 전 방식으로 Connection을 가져오면 됩니다.

    테스트 했던 코드는 첨부하겠습니다.

    그리고 A, B DB의 데이터를 동기화 할 때 PK 값으로 다시 SELECT 하는 이유가 있나요?
    되도록이면 상관명(correlation name) - new, obj, old 등을 사용하는 것을 권장드립니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 136
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4477
1065 Unable to register the CUBRID Service Tray. Retry? 메시지 팝업문제 민수킴 2019.09.02 293
1064 Unable to access system message catalog.(null) (자답) 1 공기청정기 2009.05.15 11825
1063 Unable to access system message catalog.(null) 5 공기청정기 2009.05.14 15693
1062 Ubuntu에서 apt-get 을 통한 install 지원 3 freewind 2013.07.09 13665
1061 UTF8지원 관련.. 2 스마트 2010.12.21 7750
1060 UTF8 한글이 깨짐 4 file yonggi 2023.06.19 275
1059 UTF8 로 DB 를 만들고 한글 입력시 한글이 초과하여 들어 갑니다. 3 브이찾기 2016.03.14 9140
1058 UTF-8 한글이 깨집니다. 5 코난7 2011.04.30 16475
1057 UPPER 를 이용한 like 검색 과 한글 문제 1 akasima 2017.11.16 1715
1056 UPDATE/INSERT를 한번에 하는 쿼리 질문드립니다. 2 kkckc 2009.02.17 28829
1055 UPDATE 문 WHERE절에 IN 큐피 2018.08.02 663
1054 UPDATE 다중 테이블 질문드립니다. 2 유릉 2014.11.06 7238
» Trigger 이벤트 시점에 대해 질문드립니다. 1 cubridtest 2019.10.29 281
1052 Transaction 확인시 sql_id, sql text가 나오질 않습니다. 1 큐불리드 2015.12.29 5583
1051 TimeZone 관련 질문 1 steve 2022.06.03 146
1050 TimeStamp 관련 Select 오류 질문입니다 2 Psionic 2012.12.07 9372
1049 Tibero -> Cubrid 마이그레이션 질문입니다. 2 님장사드리브큐 2017.03.30 8252
1048 This object is in a zombie state 인 경우 1 유겸아빠 2011.06.01 12070
1047 This object is in a zombie state 오류발생 도와주세요 ㅠㅠ 6 file 유니콘 2010.09.02 9004
1046 This may take a long time depending on the amount of recovery works to do.? 1 ddan0701 2013.02.07 9356
Board Pagination Prev 1 ... 143 144 145 146 147 148 149 150 151 152 ... 201 Next
/ 201

Contact Cubrid

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