2016-12-12 2 views
0

현재 새 값이 이전 값보다 작거나 같은 경우 오류가 발생하는 트리거가 작동하고 있습니다.SQL Server : Raiserror 새 값이 이전 값보다 낮거나 같으면 트리거합니다.

이 두 개의 열이 포함되어 내 number_table입니다 :

Handle (int) | IK (numeric(18,0) 

이제 IK의 내용이 변경 될 수 있지만 위쪽으로 변경해야을, 그래서 나는 새로운 값이 하나 인 경우, 오류를 높이기 위해 트리거를 만들려면 이전 값과 같거나 더 낮습니다.

내가 지금까지 가지고 트리거하지만 오류 제기하지 않는 한, 전혀 작동하지 않는 것 : 새로운 IK 값이 경우는 오류를 제기해야

CREATE TRIGGER TR_IK ON number_table 
FOR UPDATE 
AS BEGIN 
    SELECT * 
    FROM inserted i 
    JOIN deleted d ON i.Handle = d.Handle 
    WHERE i.IK < d.IK 

    RAISERROR ('The new IK is either lower than or equals the old IK', 11, 1) with log 
END 

을 이전 IK 값보다 낮거나 같음, 내가 뭘 잘못하고 있는지 알 수 있습니까?

미리 감사드립니다.

+1

새 값이 같거나 이전 값 작은 경우 롤백 하시겠습니까? – DVT

답변

2

는 시도이

CREATE TRIGGER TR_IK ON number_table 
FOR UPDATE 
AS BEGIN 
    IF EXISTS (
     SELECT * 
     FROM inserted i join deleted d ON i.Handle = d.Handle 
     WHERE i.IK <= d.IK 
     ) 
    RAISERROR ('The new IK is either lower than or equals the old IK', 11, 1) with log 


END 
+1

불평등 검사를 <= 요구 사항으로 변경해야하지만 여전히 나에게서 +1이 필요합니다. –

+0

@SeanLange 감사. (나는 그것에 대해 생각했지만, 원래 코드는 <를 가지고있다.) – DVT

+1

올바른 구절은 "낮다"보다 낮다 – HLGEM

관련 문제