트리거1 

BEGIN TRY 

BEGIN TRAN 

--INSERT INTO SMS_MSG(STATUS, SENDER, RECEIVER, MSG, RESERVEDT ,USERID, SMSFLAG) VALUES(0, '11', '123', 'ASDSA'  , @ST_ID , GETDATE() , 1)

IF @RESULT_FLAG='F'  --실패면 실패로그 테이블에 담아둔다..

BEGIN

INSERT INTO ST_AUTH_FAIL(ST_ID, ST_AUTHID, SC_CODE, FAIL_MSG, REGDATE,IP) 

VALUES(@ST_ID, @ST_AUTHID, @SC_CODE, @RESULT_MSG, GETDATE(), @IP);

END 

ELSE

BEGIN

INSERT INTO ST_AUTH_LOG(ST_AUTHID, SC_CODE, AUTH_TIME, MSG_FLAG, MANU_FLAG,IP)

VALUES(@ST_AUTHID, @SC_CODE, @AUTH_TIME, @MSG_FLAG, @MANU_FLAG, @IP)

--- ST_AUTH_LOG 에 데이터가 들어가는 순간 트리거2 가 작동   --

END 

COMMIT TRAN

--RETURN

END TRY

BEGIN CATCH

ROLLBACK TRAN

INSERT INTO ST_ERROR_LOG(ERROR_NUMBER, ERROR_PROCEDURE, ERROR_LINE ,ERROR_MSG, ERROR_STATE, ERROR_DATE, ST_ID, SC_CODE)

SELECT ERROR_NUMBER(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE(), ERROR_STATE(), getdate(), @ST_ID, @SC_CODE

END CATCH




트리거2


BEGIN TRY

BEGIN TRAN 

IF @CHECK_MSG = '등원' OR @CHECK_MSG = '지각'

BEGIN

/*

PRINT 'CHECK_MSG=' + @CHECK_MSG +'\n'

PRINT 'ST_ID=' + @ST_ID +'\n'

PRINT 'SC_CODE=' + @SC_CODE +'\n'

*/

UPDATE ST_CHECK_DATE SET

IN_CHECK = CONVERT(VARCHAR(5),@AUTH_TIME,8),

IN_CHECK_MSG = @CHECK_MSG

WHERE ST_ID  = @ST_ID AND SC_CODE = @SC_CODE

END

ELSE  -- 하원

BEGIN

UPDATE ST_CHECK_DATE SET

OUT_CHECK = CONVERT(VARCHAR(5),@AUTH_TIME,8),

OUT_CHECK_MSG = @CHECK_MSG

WHERE ST_ID  = @ST_ID AND SC_CODE = @SC_CODE

END

--메시지 테이블에 담기

PRINT 1/0   --고의로 에러를 냄 

INSERT INTO SMS_MSG(STATUS, SENDER, RECEIVER, MSG, RESERVEDT ,USERID, CREATEDT, SMSFLAG) VALUES(0, @SC_TEL, @ST_PPHONE, @RESULT_MSG , GETDATE() , @ST_ID , GETDATE() , @SMSFLAG)

COMMIT TRAN

-- RETURN

END TRY


BEGIN CATCH

ROLLBACK TRAN 

INSERT INTO ST_ERROR_LOG(ERROR_NUMBER, ERROR_PROCEDURE, ERROR_LINE ,ERROR_MSG, ERROR_STATE, ERROR_DATE, ST_ID, SC_CODE)

SELECT ERROR_NUMBER(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE(), ERROR_STATE(), getdate(), @ST_ID, @SC_CODE

END CATCH



이런식으로 개발이 되어있는데요  질문의 요지는 트리거2 에서 에러가 나면   

ROLLBACK TRANSACTION 요청에 해당하는 BEGIN TRANSACTION이 없습니다. 

이런 에러가 자꾸 뜹니다  인터넷을 좀 찾아 봤는데  트리거2가 자식 프로 시저닌깐  롤백이되면  부모(트리거1)에서  에러처리를 

하는 부분에서 @@TRANCOUNT 카운트가 0 이닌깐 처리할 트랜잭션이 없어서 없어서 에러가 나는거 가튼데 

해결방법을 못찾았습니다 ㅜ  선배님들 조언좀 해주시면 정말 감사드리겠습니다 ㅜ






No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 20342
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12155
7358 union 과 order by 질문입니다. 도와주세요. [7] 생각찾기 2013.11.20 4056
7357 UPDATE OPENQUERY 문의입니다. [2] 착한이 2013.11.20 5500
7356 Full table scan 을 하지 않는 방법! [1] tyzm 2013.11.20 3988
7355 라이센스 변경 문의 [1] 석호 2013.11.19 10520
7354 max server memory 설정 문의 [1] 토토로 2013.11.19 3993
7353 이전 기간 데이타 조회 [3] 냥냥 2013.11.19 3446
7352 DB서버가 갑자기 느려지는데 원인을 모르겠습니다 [1] 토토로 2013.11.18 8190
7351 테이블의 값을 가져와 횡으로 출력하는 프로시저를 작성하려고 합니다. [9] 하이페츠 2013.11.18 5488
7350 테이블 내용 중 특정 데이터만 unpivot하는 방법 [2] 하이페츠 2013.11.18 4427
7349 다른 로그인으로 같은 SP 실행 시 실행시간 차이 [7] 디비러 2013.11.18 3682
7348 혹시 외부 clr을 사용해보신분 계신가요? [5] 군고구마 2013.11.17 5626
7347 mssql 테이블과 테이블을 비교해서 없는내용만 지울수없을가요? [4] 서달달 2013.11.17 7764
7346 지역변수에서 nvarchar(max) 이상사용하려면 어떻게 해야하나요? [2] slgi 2013.11.16 13114
7345 [DB] 데이타 센터에서 다른 데이터 센터로 [2] 송동운 2013.11.16 3424
7344 데드락 및 traceon 관련 질문 입니다. [1] 디비러 2013.11.15 4336
» 중첩 트랜젝션 에러처리 프로세스에 관하여 질문이 있습니다. [7] alima 2013.11.15 7197
7342 미러링 질문 드립니다. [1] 나는짱이야 2013.11.15 3751
7341 긴급질문입니다. 서버 리부팅 후 데이타베이스가 복구상태로 들어갔어요 [2] 정인화_307824 2013.11.15 8111
7340 SQLServer 질문사항입니다. [1] Runningman、 2013.11.14 3211
7339 mssql admin쪽 공부할려고하는데 책좀 추천해주세요 [2] 로쏘네리 2013.11.14 4072





XE Login