트리거 내에서 RAISERROR 로 오류를 생성 할 경우, 심각도(severity)가 20~25인 경우에는
자동으로 rollback 처리 된다.
(예)
CREATE TABLE Test1
(number INT IDENTITY,
bookname nvarchar(100),
UnitPrice INT,
Qty INT,
Price INT
)
CREATE TRIGGER TR_Test1_INSERT
ON Test1
FOR INSERT
AS
update Test1
Set Price = (select UnitPrice from inserted) * (select Qty from inserted)
where number = (select number from inserted)
RAISERROR ('Error raised!', -- Message text.
20, -- Severity.
1 -- State.
) with log;
insert into Test1 (bookname, UnitPrice, Qty)
values ('book1', 600, 2)
'데이터베이스' 카테고리의 다른 글
[SQL서버] 저장 프로시저 잊기 쉬운사항 정리 (0) | 2016.08.30 |
---|---|
[SQL서버] 트리거에서 수정된 컬럼 확인 (0) | 2016.08.03 |
[SQL서버] 제약조건 걸린 다른 테이블 확인 (0) | 2014.10.28 |
[SQL서버] 분산 트랜잭션 (1) | 2014.09.18 |
[SQL서버] 동적쿼리에서 파라미터 사용 (0) | 2014.07.22 |