我使用以下语法插入新记录(我不想拥有重复的密钥):
insert into tbl(key) values select max(key)+1 from tbl
有人说它会出现并发问题 是吗?
SELECT -> LOCK table -> INSERT
或
LOCK table -> SELECT -> INSERT
以上哪一项是正确的?
答案 0 :(得分:1)
如果在交易中发生这种情况,你会没事的。
答案 1 :(得分:1)
如果您正在进行复制,最好的办法是使用GUID作为主键,并且“请”不要在该列上创建聚簇索引。
答案 2 :(得分:0)
选择将锁定表,并且您在一个语句中执行所有操作,看起来应该没问题(除了计算max(键)的性能之外)。