我想用SQL Server 2008 R2开发一个小型Winform软件C#,该软件可在3台计算机上运行。
我设计了带有的“ Customer_Master”表INDENTITY type primay key(CusId)
。
我要说的是,假设我打开客户注册表格时,程序应该显示下一个id值。我可以通过使用获得下一个标识值SCOPE_IDENTITY()
。但是在这种情况下,当我使用集中式系统时,如果所有计算机尝试同时创建一个新客户,它将在其注册表格上显示相同的密钥。但是,如果他们注册了新客户,则注册的ID将与显示的ID不同。
因此,我想锁定下一个标识值,使用表单中显示的ID向Customer注册。这个怎么做。有什么方法可以管理并发插入。我正在使用C#和SQL Server R2 Express。
请帮我解决这个问题。提前致谢。
在插入记录之前,您真的需要ID吗?如果没有,则SCOPE_IDENTITY将正常工作。如果可以插入新记录,则SCOPE_IDENTITY将返回客户端插入的记录的ID(而不是其他任何客户端)。
如果确实需要该ID,则可以插入“存根”记录作为占位符,直到客户写入“真实”客户记录为止。这样,每个客户端实际上可以在写入实际数据之前保留ID。
但是,这不是一个好主意,因为它可能导致表中出现大量垃圾数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句