插入后TRIGGER中的错误

时间:2014-10-10 15:15:34

标签: sql sql-server-2008 triggers

我在SQL Server 2008中遇到了下一个TRIGGER的问题:

AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @Order int,
            @Payment varchar(15)

select @order=OrderID,@payment=PaymentType from inserted

    IF @Payment='paypal'
    begin
            exec PaypalTransactionsUpdate @OrderID=@Order
    end
    ELSE
    begin 
        Return
    end
END

我无法理解为什么从插入的表中选择不起作用。如果我使用:

select TOP 1 @order=OrderID,@payment=PaymentType from TABLENAME where PaymentType='Paypal' order by OrderID desc.

它完美无缺,任何人都可以帮助我吗?我想使用插入的行表来防止数据错误,因为第二个语句不安全,也许最重要的一个在触发器运行时已经改变。

我本周末正在使用top1选择并且正在为一些订单工作,而某些订单并不是没有理由的。我今天早上看到了我想要同步的行,触发器在下一次插入时执行,这意味着,当Paypal订单到来时不保持同步直到下一个订单到来并重新运行触发器。我使用后插入修改方法,无法理解为什么会发生这种情况。有任何想法吗? 如果有人给我一个线索如何测试触发器或查看它们的错误日志,我将不胜感激。

0 个答案:

没有答案