* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
windows10 64bit | |
[cubrid_rel] 수행 결과 | |
CUBRID Manager 10.1.0.0006 (64bit) |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요?
큐브리드 트리거 관련해서 질문 드릴께요
시점은 after 입니다.
관련테이블(tb_ABC) 선택하고
print 선택 후
아래 sql 문란에
INSERT INTO THE_tb_ABC
SELECT A_ID
, B_NO
, C_NO
, B_INFO
, C_INFO
, ''
, 'C'
, TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS') || '000000'
, SYSTIMESTAMP
, 'N'
FROM tb_ABC
라고 넣었습니다. (테이블명, 컬럼명은 예시로 수정했습니다.)
트리거 전체 문은
CREATE TRIGGER tr_tb_mttr_info_c
AFTER INSERT ON tb_mttr_info
EXECUTE PRINT
'INSERT INTO THE_tb_ABC SELECT A_ID, B_NO, C_NO, B_INFO, C_INFO, '''', ''C'', TO_CHAR(SYSTIMESTAMP, ''YYYYMMDDHH24MISS'') || ''000000'', SYSTIMESTAMP, ''N'' FROM tb_ABC';
입니다.
위 sql은 원래 하려던게 안되어서 간소화 시킨 질의라 다시 전체문 올려봅니다.
CREATE TRIGGER tr_tb_mttr_info_test
AFTER INSERT ON tb_mttr_info
EXECUTE PRINT
'INSERT INTO THE_tb_ABC ( A_ID, B_NO, C_NO, B_INFO, C_INFO, D_INFO, E_INFO, F_DATE, G_DATE, H_INFO)
VALUES ( :NEW.A_ID, :NEW.B_NO, :NEW.C_INFO, ''R'', ''C'', TRUNC(CAST(SYSTIMESTAMP AS DATE)), TO_CHAR(SYSTIMESTAMP, ''YYYYMMDDHH24MISS'') || ''000000'', ''N'' )';
물론 해당 DB에서 sql문은 정상 동작 확인됩니다.
큐브리드매니저상에서 동작확인도 되지 않는 부분과 혹시 동작이 되면 어떻게 확인을 할수 있나요? (예를 들어 실행 확인창, 콘솔창 등등 - 에러 부분 포함)
확인 되시는데로 답변 부탁드립니다.
트리거는 트랜잭션에 포함된 행위라, 해당 트리거 오류가 발생하면 트리거를 발생했던 질의(insert, delete, update)에서 오류가 발생합니다.
트리거 동작 확인 방법으로,, PRINT 구문을 통해서 터미널에 메세지를 출력할 수 있습니다.
매뉴얼(https://www.cubrid.org/manual/en/10.1/sql/trigger.html)에서 Trigger Action 부분을 참고하세요.