触发错误,不显示Raiserror消息

时间:2019-08-03 21:09:57

标签: sql-server triggers

我有一个触发器,我正在测试以更改CurrentFlag数据库中AdventureWorksDW2014列中的值。

如果CurrentFlag的值为0或1,并且执行以下任何查询,则此触发器可以允许我执行更新查询:

UPDATE DIMEMPLOYEES 
SET CURRENTFLAG = 0 
WHERE EMPLOYEEKEY = 1 

UPDATE DIMEMPLOYEES 
SET CURRENTFLAG = 1 
WHERE EMPLOYEEKEY = 1

因此,如果同时满足两个条件,则控制台上应显示一条消息,内容如下:PRINT 'VALUE UPDATED',因此,如果不满足这些条件,则该消息应相同:

PRINT 'VALUE ERROR CANNOT BE UPDATED, IS NOT WITHIN THE PARAMETERS ALLOWED'

我有一个执行类似操作的触发器,但是我无法尝试对其进行调整。这是代码:

CREATE TRIGGER NOUPDATE 
ON DIMEMPLOYEE
FOR UPDATE
AS
    IF UPDATE(CURRENTFLAG) 
    BEGIN
        UPDATE DimEmployee 
        SET CurrentFlag = H.CURRENTFLAG
        FROM DimEmployee J 
        INNER JOIN inserted H ON J.CurrentFlag = H.CurrentFlag
        WHERE H.CurrentFlag <= 1

        RAISERROR('VALUE UPDATED.', 10, 1)
    END

    BEGIN
        UPDATE DimEmployee 
        SET CurrentFlag = H. CURRENTFLAG
        FROM DimEmployee J 
        INNER JOIN inserted H ON J.CurrentFlag = H.CurrentFlag
        WHERE H.CurrentFlag > 1

        RAISERROR('VALUE ERROR CANNOT BE UPDATED, IS NOT WITHIN THE PARAMETERS ALLOWED', 10, 1)
    END          
GO

0 个答案:

没有答案