我为一家药房公司开发了一个Windows应用程序。所以每个用户都可以安装设置并使用该应用程序。现在有一个Purchase模块,用户输入的InvoiceNumber应该是唯一的。输入InvoiceNumber(并保留文本) -box)我有一个验证来检查InvoiceNumber是否已经存在。这很好。现在问题是如果两个用户在不同的系统中输入相同的InvoiceNumber并且当他们同时点击Save按钮时,它将是比如插入两个具有相同InvoiceNumber的记录。这是2-3个模块中的问题,我可以注意到上述情况。
任何人都可以建议避免上述情况。
根据以下注释如果我在InvoiceNumber列上创建Unique Constraint,那么它应该是唯一的。在我的应用程序中,用户可以删除创建的发票并再次输入这些详细信息。在那种情况下我只是更新数据库中的IsDeleted列这种约束不起作用。
Prathap
答案 0 :(得分:1)
对于您的更新,最简单的解决方案是使用约束DeletedGuid
添加类型为uniqueidentifier
的新列NOT NULL
,并将其默认为零GUID。
当您设置IsDeleted = 1
时,您也会DeletedGuid = NewId()
。然后,您可以对InvoiceNumber, DeletedGuid
而不仅仅是InvoiceNumber
设置唯一约束,这样做的唯一方法是重复InvoiceNumber
,如果一个或两个值在DeletedGuid
中有一个随机GUID {1}}列(如果您可以“取消删除”发票,请务必将GUID归零)。