最近我继承了一个新的 ASP Web 应用程序,它只允许客户在线支付他们的未结发票。该应用程序设计不佳,并且没有付款历史记录表。将支付记录传输到记录会计系统的 Web 服务删除了整个支付表。
我刚刚在 Payments 表上创建了一个简单的触发器,它只是将 Payments 表中的数据复制到 Payment_Log 表中。最初,触发器只是做了一个 select * on insert 来复制数据。但是,我刚刚修改了触发器以将付款日期插入到 Payment_Log 表中,因为我们的一位客户遇到了一些我需要调试的问题。新的触发器如下。我的问题是我注意到使用这个新版本的触发器,行被插入到表的中间(即不是在末尾)。有人可以解释为什么会这样吗?
ALTER trigger [dbo].[PaymentHistory] on [dbo].[Payments]
for insert as
Declare @InvoiceNo nvarchar(255),
@CustomerName nvarchar(255),
@PaymentAmount float,
@PaymentRefNumber nvarchar(255),
@BulkPaid bit,
@PaymentType nvarchar(255),
@PaymentDate datetime
Select @InvoiceNo = InvoiceNo,
@CustomerName = CustomerName,
@PaymentAmount = PaymentAmount,
@PaymentRefNumber = PaymentRefNumber,
@BulkPaid = BulkPaid,
@PaymentType = PaymentType
from inserted
Set @PaymentDate = GETDATE()
Insert into Payment_Log
values (@InvoiceNo, @CustomerName, @PaymentAmount, @PaymentRefNumber, @BulkPaid, @PaymentType, @PaymentDate)
下面是 SQL Server Management Studio 的屏幕截图,显示了插入到表数据中间的行。在此先感谢您的帮助。