| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1816 人关注过本帖
标题:多人向sqlserver远程输入数据,避免id最大值重复问题
只看楼主 加入收藏
ljlbxhlc
Rank: 2
等 级:论坛游民
帖 子:124
专家分:20
注 册:2013-9-24
结帖率:25.71%
收藏
已结贴  问题点数:10 回复次数:8 
多人向sqlserver远程输入数据,避免id最大值重复问题
一个软件是多人同时操作一个远程sql数据表,表的id字段是序号!我用一下命令处理,但是有id重复的情况,往大侠帮助!!!
Insert into 表(id) select isnll(max(id),0)+1 from 表
多人输入id会有重复,该如何解决?
搜索更多相关主题的帖子: 远程 sqlserver 输入 重复 最大值 
2021-04-28 11:00
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:991
专家分:4966
注 册:2013-2-16
收藏
得分:2 
在服务器端,把id列设置为“自增长”字段。一般主键最好不带任何业务逻辑。
2021-04-29 09:21
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:2 
回复 楼主 ljlbxhlc
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-04-29 11:09
ljlbxhlc
Rank: 2
等 级:论坛游民
帖 子:124
专家分:20
注 册:2013-9-24
收藏
得分:0 
谢谢,各位,可是我的这个字段id生成的同时还有其他用处,
我用from 表 with (holdlock) 行不?
这样在一个人进行插入的时候其实人就不能插入了!
可是,这样的话。。第二个插入失败后会怎么样?会继续等待再次插入,
还是提示插入失败,结束呢?
2021-04-29 13:45
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用ljlbxhlc在2021-4-29 13:45:57的发言:

谢谢,各位,可是我的这个字段id生成的同时还有其他用处,
我用from 表 with (holdlock) 行不?
这样在一个人进行插入的时候其实人就不能插入了!
可是,这样的话。。第二个插入失败后会怎么样?会继续等待再次插入,
还是提示插入失败,结束呢?


如果一定要这样的话,就给出提示,记录正在被处理,其他人等处理完了再处理呗 !
2021-04-29 13:57
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1089
专家分:2682
注 册:2015-12-30
收藏
得分:2 
自增长的字段不需要也不能赋值,可以用事务处理,保证存储的完整。
也可以先插入记录,获得插入记录的id,然后用update更新其他字段
2021-04-30 08:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
关键是各人在计算出这个ID时的同步问题,读取MAX(ID)都有可能是同一个ID
如果有读记录时自动锁处理就没问题,否则就要主动锁定/解锁记录

2021-04-30 10:43
sash
Rank: 4
等 级:业余侠客
威 望:6
帖 子:65
专家分:249
注 册:2014-4-25
收藏
得分:2 
楼主你好,要实现你的要求,最好的办法就是使用自增量字段来解决问题。因为根据你的要求是:这个ID必须是唯一的,顺序的,这个由数据库系统自动生成和维护是最好的方法。至于这个ID还需要有其它用处,你可以等它生成后再利用。
2021-05-03 10:52
ljlbxhlc
Rank: 2
等 级:论坛游民
帖 子:124
专家分:20
注 册:2013-9-24
收藏
得分:0 
回复 7楼 吹水佬
你好,您说的是我想的,可我对数据锁不太了解。。想请教。。。
Insert  into 表 (id)  select max(id)+1  from 表 with ( holdlock)
这个语句会产生什么样的效果,是不是在可以加锁。。。
如何是用不用解锁。。另外,在别人也同时用此语句插入记录时会不会插不进去呢?
请教。。。。谢谢
2021-05-04 15:12
快速回复:多人向sqlserver远程输入数据,避免id最大值重复问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065200 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved