我都需要具有唯一编号的发票表(和亚音速的“发票” ActiveRecord()
与InvoiceNumebr
列。我使用的块试图GetTheNextAvailableNumber()
内TransactionScope
的。这工作。的TransactionScope,选择采用亚音速
我不确定的是,如果有5个或50个不同的用户在大约同一时间尝试创建发票,会发生什么情况,如果所有5个或50个用户不保存,则该方法会返回相同的数字发票对象,直到更晚
在TransactionScope
块内调用的GetTheNextAvailableNumber()
方法使用亚音速选择查询w ith MAX()
以获得最大数量,然后添加1.该列本身具有UNIQUE索引!
交易的隔离级别默认(可序列化)确保每个人都得到一个唯一的数字?还是有更聪明的机制来实现这一目标? 该列不能有IDENTITY,因为PK列InvoiceID已经拥有它。
感谢罗布, 我在考虑使用Guid作为表的主键,但是,对于发票号码,我需要一个格式良好,可读的数字(int或带前导零的bigint,如0000000191)。 我想使用Guid作为PK会让我使用发票数字列中的IDENTITY ...是否正确? – John 2009-08-26 11:15:07