在不设置标识的情况下自动递增主键

时间:2009-10-22 12:16:03

标签: sql

我使用以下语法插入新记录(我不想拥有重复的密钥):

insert into tbl(key) values select max(key)+1 from tbl

有人说它会出现并发问题 是吗?

SELECT -> LOCK table -> INSERT

LOCK table -> SELECT -> INSERT

以上哪一项是正确的?

3 个答案:

答案 0 :(得分:1)

如果在交易中发生这种情况,你会没事的。

答案 1 :(得分:1)

如果您正在进行复制,最好的办法是使用GUID作为主键,并且“请”不要在该列上创建聚簇索引。

答案 2 :(得分:0)

选择将锁定表,并且您在一个语句中执行所有操作,看起来应该没问题(除了计算max(键)的性能之外)。