插入DB时取得主键冲突问题
游北亮 博客专家认证 2007-03-06 04:39:53 问题是这样的,我设置了一个数值型字段为主键,新记录主键是旧记录最大主键加1
SQL这么写会报错:
"insert into [log] (id,userId) values((select max(id)+1 from [log]),'" + loginUser + "')"
后来就改成先在C#中取得主键并加1,然后再插入数据库
执行 id = (select max(id)+1 from [log])
然后"insert into [log] (id,userId) values(" + id + ",'" + loginUser + "')"
这样在多个页面同时打开时,可能造成主键重复
现在改写SQL为下面,正常了:
"insert into [log] (id,userId) select max(id)+1,'" + loginUser + "' from [log]"
请问除了上面的办法还有什么更好的办法没有?
不使用自动增长的字段。