我在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订单到来时不保持同步直到下一个订单到来并重新运行触发器。我使用后插入修改方法,无法理解为什么会发生这种情况。有任何想法吗? 如果有人给我一个线索如何测试触发器或查看它们的错误日志,我将不胜感激。