【发布时间】:2018-04-06 20:11:45
【问题描述】:
我正在使用 Max 函数生成发票编号,并将最后一个发票编号加 1。非常简单。但我将此应用到多用户环境中遇到问题。因为两个用户同时打开一个发票窗口都可以获得相同的 ID,所以发票号应该是第一个出现而不是最后一个,所以我不能使用身份(自动生成 ID)作为发票号。我想在 C# 中为多用户环境窗口窗体应用程序生成发票编号...
另一个问题是两个用户同时访问和更新同一记录会发生什么。
我希望你能理解这个问题。我阅读了有关乐观与悲观锁定的信息,但我需要一个解决方案。所以有人可以回复我吗
【问题讨论】:
-
只需使用 IDENTITY 列并更改您的 UI,使其仅在保存记录后显示。如果尚未保存记录,为什么要显示此信息?记录完成后应保存,因此如果用户取消发票创建,您将不会留下空记录。
-
是的,使用身份列 - 下一次审查确保您被解雇。这是一种反模式,因为发票编号具有标识列无法满足的法律要求。这里可能出错的原因太多了,包括由于 sql server 重新启动行为导致的间隙。
标签: c# sql-server