【发布时间】:2009-08-25 09:25:20
【问题描述】:
我有一个 Invoice 表(和一个 SubSonic 'Invoice' ActiveRecord() 和一个需要具有唯一编号的InvoiceNumebr 列。我正在尝试使用块在TransactionScope 内GetTheNextAvailableNumber()。这有效。
我不确定的是,如果 5 或 50 个不同的用户尝试以大约同时,如果 5 或 50 个用户稍后才保存发票对象,该方法将为所有用户返回相同的数字。
在TransactionScope 块内调用的GetTheNextAvailableNumber() 方法使用带有MAX() 的Subsonic Select 查询来获取最大数,然后加1。列本身确实有一个唯一索引!
交易的隔离级别默认(可序列化)是否会确保每个交易都有一个唯一的编号?还是有更聪明的机制来实现这一目标? 该列不能有 IDENTITY,因为 PK 列 InvoiceID 已经有它。
【问题讨论】:
标签: subsonic