繁体   English   中英

如何获取并锁定下一个标识值SQL Server

[英]How to get and lock next identity value SQL Server

我想用一台运行在3台计算机上的SQL Server 2008 R2开发一个小型winform软件C#。

我设计了带有INDENTITY type primay key(CusId)的“Customer_Master”表。

我想要的是,让我们说当我打开客户注册表单时,程序应该显示下一个id值。 我可以使用SCOPE_IDENTITY()获取下一个标识值。 但在这种情况下,当我使用集中式系统时,如果所有计算机同时尝试创建新客户,它将在其注册表单中显示相同的密钥。 但是,如果他们注册了新客户,则注册的ID将与显示的不同。

所以我想锁定下一个标识值,使用表格中显示的id向Customer注册。 这个怎么做。 有没有办法管理并发插入。 我正在使用C#和SQL Server R2 Express。

请帮我解决这个问题。 提前致谢。

不使用IDENTITY,INT IDENTITY无法实现“想要”,因为下一个序列被确定为INSERT已执行。 您也无法“猜测”下一个数字是什么,因为无法保证身份是连续的。 我不认为这是一个非常明智的决定,但是如果你真的想要这个,那么你需要创建一个表,其目的是按顺序递增并将该值用作PK,并从Customer_Master表中删除IDENTITY规范。

插入记录之前 ,您真的需要ID吗? 如果没有,那么SCOPE_IDENTITY将正常工作。 如果新记录的插入有效,则SCOPE_IDENTITY将返回客户端插入的记录的id(而不是任何其他客户端)。

如果你确实需要事先ID,那么你可以,直到客户端写入了“真实”的客户记录插入一个“存根”纪录的占位符。 这样,每个客户端在写入实际数据之前基本上可以保留ID。

但是,这不是一个好主意,因为它可能会导致表中的大量垃圾数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM