【发布时间】:2010-11-10 10:40:04
【问题描述】:
我有一个表,我需要在 99% 的情况下自动分配 ID(另外 1% 的情况似乎排除了使用标识列)。所以我有一个存储过程来获取下一个 ID,如下所示:
select @nextid = lastid+1 from last_auto_id
check next available id in the table...
update last_auto_id set lastid = @nextid
检查必须检查用户是否手动使用了 ID 并找到下一个未使用的 ID。
当我连续调用它时它工作正常,返回 1、2、3 ...我需要做的是提供一些锁定,多个进程同时调用它。理想情况下,我只需要它专门锁定该代码周围的 last_auto_id 表,以便第二次调用必须等待第一次调用更新表,然后才能运行它的选择。
在 Postgres 中,我可以执行“LOCK TABLE last_auto_id;”之类的操作显式锁定表。任何想法如何在 SQL Server 中完成它?
提前致谢!
【问题讨论】:
标签: sql sql-server locking