트리거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 33989
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 17166
» 중첩 트랜젝션 에러처리 프로세스에 관하여 질문이 있습니다. [7] alima 2013.11.15 7201
7342 미러링 질문 드립니다. [1] 나는짱이야 2013.11.15 3756
7341 긴급질문입니다. 서버 리부팅 후 데이타베이스가 복구상태로 들어갔어요 [2] 정인화_307824 2013.11.15 8167
7340 SQLServer 질문사항입니다. [1] Runningman、 2013.11.14 3216
7339 mssql admin쪽 공부할려고하는데 책좀 추천해주세요 [2] 로쏘네리 2013.11.14 4074
7338 replication 궁금한 사항 문의드립니다. [2] 현석아빠 2013.11.14 3714
7337 mssql 2005 익스프레스 버전에서 2005스탠다드로 업그레이드 방법 문의드립니다. [6] 샤바랄라 2013.11.13 5613
7336 선배님들 error 로그에 대해서 질문이 있습니다. [2] alima 2013.11.13 3319
7335 간단한 실행계획 확인 중 궁금점 [9] Jaden 2013.11.12 4378
7334 트랜잭션 로그전달 계정 권한 이슈 - 로그쉬핑 (Log Shipping) [1] 우생 2013.11.12 8300
7333 SQL 관련 튜닝 [7] 냥냥 2013.11.12 4560
7332 sys.dm_exec_sql_text DMV의 dbid 컬럼 값이 null인 이유는? [1] kk 2013.11.12 4062
7331 sp_who2 조회시 특정 SPID 에 대한 질문 입니다. 화랑 2013.11.12 5621
7330 ODBC 01000 오류 질문 입니다. 쓰름매미 2013.11.11 5040
7329 insert 구문으로 이뤄진 sql 파일 실행방법 [3] 수말 2013.11.11 4713
7328 유지 관리 계획은 Full backup 진행시 질문드립니다. [2] 나는짱이야 2013.11.11 3642
7327 쿼리질문이요 ㅠㅠ [6] 레리 2013.11.11 3368
7326 DB 생성시 디폴트 경로 관련 질문입니다. [4] 흑흑 2013.11.10 3274
7325 프로시저 실행을 중단할려면 어떻게 하나요?(급합니다.) [2] 김준형_283549 2013.11.09 7348
7324 대량으로 사람을 추천하는것을 구현할려면 어떻게 하면 좋을런지요? [1] 이은학_301999 2013.11.09 3343





XE Login