我正在asp.net MVC中开发一个应该生成发票的网站。
在阅读了有关发票编号生成的一些内容后,我的理解是使用触发器或存储过程,以确保正确生成数字而不会跳过或重复数字,因为会同时插入发票。
根据我的理解,最好的方法是在我的发票表的后插入中创建一个触发器,在单个事务中完成工作。
所以我想出了这个,看起来效果很好(本周末更多测试)
CREATE TRIGGER Invoices_SetInvoiceNum ON Invoices AFTER INSERT
AS
declare @next int
Begin tran
set nocount on
update counters set @next=InvoiceNum=InvoiceNum+1
update Invoices set InvoiceNum = @next from inserted i join Invoices p on p.Id = i.Id
IF @@ERROR = 0
COMMIT TRAN
ELSE
ROLLBACK TRAN
提前感谢您对此主题的任何见解。
答案 0 :(得分:2)
更好的方法是将发票栏设为Identity column并让其自行递增。
CREATE TABLE Invoices
(
InvoiceNum int IDENTITY(1,1),
AccountNum int,
OtherStuff varchar(30)
);