2011-02-06 6 views
0

트리거가 인 경우 삽입인데 오류가 발생하여 삽입을 중지해야합니다.SQL Server : 트리거에서 INSERT 중지

RAISERROR

오류 메시지가 표시되지만 동작 거래없이 다른 방법 을 중단 할 수있는 방법이있다 것인가?

+1

적절한 방법은 트랜잭션을 사용하고 오류 케이스에서 'ROLLBACK TRANSACTION'을 실행하는 것입니다. 실제로 트리거 안의 INSERT를 "중지"하는 다른 방법은 없습니다 ... –

+0

if 인스턴트 메시징 내부에 tranasction가있는 값은 이미 삽입 된 테이블에 있고 이미 테이블 r8에 삽입되어 있습니까? – Sudantha

답변

5

방아쇠를 잘못 놓았습니다.

대신 제어 할 수있는 INSTEAD OF 트리거가 필요합니다 (말장난 없음). A 삽입 삽입 후 트리거가 발생하므로 말은 오래 고정됩니다.

+0

'AFTER INSERT'는 아무 것도 말하지 않고 ... 대신 INSTEAD OF 솔루션을 트리거합니다. –

+0

AFTER INSERT 트리거에서 에러 케이스에서 트랜잭션을 항상 롤백 할 수 있으므로 INSERT를 취소 할 수 있습니다. –

+1

@marc_s : FOR INSERT 트리거에서 오랫동안 볼트를 사용하는 말의 개념에 대해서만 숙고했습니다. (INSERT INSERT)에 관한 말 (말)에 대해 말할 수 있습니다. SQL Server에서 동일한 종류의 방아쇠임을 알게되었습니다. 필자는 'AFTER INSERT'구문을 사용한 적이 한번도 없었고, FOR INSERT 만 사용한 적이 있습니다. 이전에 들어 봤지만 항상 다른 개념이라고 생각했습니다. (즉, AFTER INSERT 문에서 작업을 취소 할 수 없었습니다. 방아쇠). 음, 배우기에는 너무 늦지 않았습니다. –

관련 문제