SQL Server:Raiserror如果新值低于或等于旧值,则触发

时间:2016-12-12 15:53:49

标签: sql-server sql-server-2008 triggers

我正在处理一个触发器,如果​​新值低于或等于旧值,则会引发错误。

这是我的number_table,其中包含两列:

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

现在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值低于或等于旧的IK值,它应该只会引发错误,是否有人知道我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分: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