请教会不会重号的问题

swgdd 2014-03-13 04:17:21
BEGIN TRAN DECLARE @value varchar(50) SELECT @value = RIGHT(cast(power(10, 7)
AS varchar) + MAX(cast(YDH AS integer))
+ 1, 7)
FROM 表名
SET @value = @value
INSERT
INTO 表名(YDH, FZ)
VALUES (@value, ' ww ') COMMIT TRAN

如果有100个客户端同时执行,YDH会不会有重号。
另:sql 2000 如果客户端同时发送命令,有查询、有新增,有修改的,sql 2000是执行完一个任务再进下个任务,还是同时执行的。
...全文
96 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2014-03-13
  • 打赏
  • 举报
回复
引用 11 楼 swgdd 的回复:
用什么办法可以在提交这个事务时,把这表锁定,事务完成后再开启
select * from 表 with(xlock)
swgdd 2014-03-13
  • 打赏
  • 举报
回复
用什么办法可以在提交这个事务时,把这表锁定,事务完成后再开启
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
有可能,因为可能短时间内几个客户获取了同一个最大YDH,然后把相同的数据插入,违反主键月苏
swgdd 2014-03-13
  • 打赏
  • 举报
回复
把YDH加主键,不知道100个客户执行时,有的客户端会不会返回出错揭示
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
那GUID就没意义了,比较快捷的方式是让这种访问并行操作,而是串行操作,不过这样会伤害并发性
swgdd 2014-03-13
  • 打赏
  • 举报
回复
是的,我取号是有意义的,必须是连续7位数0000001.....每加一条加1。用id号又不行
--小F-- 2014-03-13
  • 打赏
  • 举报
回复
用GUID可以保证全球唯一。
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
你取号是有意义的吧?
octwind 2014-03-13
  • 打赏
  • 举报
回复
改用guid类型?
LongRui888 2014-03-13
  • 打赏
  • 举报
回复
引用 2 楼 swgdd 的回复:
那有什么办法解决
试试加上updlock : FROM 表名 with(updlock)
swgdd 2014-03-13
  • 打赏
  • 举报
回复
那有什么办法解决
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
会重号。同时执行

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧