2009-05-07 2 views
0

표준 메시지를받지 않고 SQL Server 트리거 내에서 ROLLBACK TRANS를 어떻게 사용할 수 있습니까?raiseerror sql 서버 자동 메시지

"메시지 3609, 수준 16, 상태 1, 줄 1 트랜잭션이 트리거에서 끝났습니다. 일괄 처리가 중단되었습니다."

이것은 클라이언트로 반환됩니다. 나는 롤백을 조용히하고 싶다. 방아쇠 내에서만 이것을 달성해야합니다. 즉, 오류 메시지를 캡처하기 위해 C# 또는 .NET 코드가 변경되지 않습니다.

최근에 추가 된 기능에 대한 '더티'해결 방법이라고 덧붙입니다. 새로운 기능을 추가했을 때 클라이언트는 그것을 좋아하지 않았습니다. 오히려 방아쇠 내부에서 업데이트를 죽인 코드베이스의 비상 릴리스를 수행하십시오. 호출 코드는 저장된 proc가 아닌 클라이언트 app에 내장 된 SQL입니다.

답변

1

문제는 트리거 내부의 롤백은 기본 테이블에서 삽입/업데이트되거나 삭제 된 행이 다시 원래의 프로그램으로 돌아 갔음을 의미합니다. .

호출 코드가 테이블을 직접 업데이트하거나 테이블을 업데이트하는 저장 프로 시저를 호출합니까? 후자는 롤백을 자동으로 처리하기위한 더 많은 범위를 제공합니다.

+0

직접 테이블을 업데이트하는 것은 불행합니다. –

1

업데이트 된 행을 실제로 수행하지 않는 INSTEAD OF 트리거가 필요합니다.