SQL Server:触发器处理多行



如果我进行多次插入,我有一个触发器,然后出现错误:

IF((SELECT FACTREGELPRIJS FROM inserted) > 0)

这是我的触发器:

CREATE TRIGGER [dbo].[trg]
ON [dbo].[FACTUURREGEL]
AFTER INSERT
AS
BEGIN
    DECLARE @rowCount INT = @@ROWCOUNT 
    IF(@rowCount = 0)
        RETURN
    BEGIN TRY
        IF(EXISTS(SELECT 1 FROM inserted) 
           AND NOT EXISTS(SELECT 1 FROM deleted))
        BEGIN
            IF((SELECT FACTREGELPRIJS FROM inserted) > 0)
            BEGIN
                RAISERROR('MAG geen prijs toegevoegd worden',16,1)
            END
            ELSE
            BEGIN
                UPDATE f 
                SET FACTREGELPRIJS = (p.PRODUCTPRIJS * f.FACTREGELHOEVEELHEID) - ((p.PRODUCTPRIJS * f.FACTREGELHOEVEELHEID)*(f.FACTREGELKORTING/100.0))
                FROM FACTUURREGEL f
                INNER JOIN PRODUCT p on p.PRODUCTID = f.PRODUCTID
            END
        END
    END TRY
    BEGIN CATCH
        ROLLBACK TRANSACTION;
        DECLARE
            @ErrorMessage   VARCHAR(400),
            @ErrorSeverity  INT,
            @ErrorState     INT
        SELECT
            @ErrorMessage   = ERROR_MESSAGE(),
            @ErrorSeverity  = ERROR_SEVERITY(),
            @ErrorState = ERROR_STATE()
        RAISERROR (@ErrorMessage , @ErrorSeverity, @ErrorState)
    END CATCH
END

我该如何解决?谢谢

不能将列与标量值进行比较。查询应返回标量值而不是列。

例如像这样:

IF((SELECT count(FACTREGELPRIJS) FROM inserted)> 0)

要检查价格,请执行以下操作:

IF((SELECT SUM(FACTREGELPRIJS) FROM inserted)> 0)

最新更新