有一个包含varchar标识符的表。 还有几个SP通过获得最大值并递增1来生成此数字。
如何锁定表格,以便我可以保留ID,例如50条新纪录, 同时没有任何用户没有在我获得的“范围”中插入记录。
有可能是这样的吗?
答案 0 :(得分:2)
这是一个难以解决的难题,这就是为什么每个RDBMS实现都有内置的自动递增标识符数据类型。
使用AN IDENTITY
字段
这确实是唯一有效的解决方案。如果您的事务处理率很高,那么代码中会有大量的锁定和阻塞,以执行引擎为您自动处理的内容。
如果您需要字母数字字段,则没有理由不能拥有标识字段和varchar
并将其用作双键。
答案 1 :(得分:0)
在事务中插入插入。
示例:
BEGIN TRANSACTION MyIdentifierRange
EXEC usp_createNewIdentifier
COMMIT TRANSACTION MyIdentifierRange