如何保证序号唯一?

netscaler 2003-06-13 10:28:01
有一张表,里面有一个序号字段,当用户插入一条记录后,我通过得到插入前表中的总记录数后加一来作为新记录的序号值,这种方式在只有一个用户操作的情况下工作的很好,但在多人同时操作时会出现重复的序号,请问除了在插入新记录时锁定表以外还有什么方便的方法可以生成唯一的序号吗?(用SQL SERVER中的自动增加字段在删除记录后会出现不连续的现象。)
...全文
225 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netscaler 2003-06-14
  • 打赏
  • 举报
回复
谢谢各位,blactte说的有道理,用myflok的方法可行,我把这个序号字段从表中去掉,在显示时再计算。
wgy2008 2003-06-13
  • 打赏
  • 举报
回复
IDENTITY(属性)
在表中创建一个标识列。该属性与 CREATE TABLE 及 ALTER TABLE Transact-SQL 语句一起使用。



说明 IDENTITY 属性与 SQL-DMO Identity 属性不同,后者表现列的行标识属性。


语法
IDENTITY [ ( seed , increment ) ]

参数
seed

装载到表中的第一个行所使用的值。

increment

增量值,该值被添加到前一个已装载的行的标识值上。

必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值 (1,1)。

blactte 2003-06-13
  • 打赏
  • 举报
回复
identity字段可以实现
你为什么需要这个字段连续?是否真的有必要?
你原来的方法可以吗,假设一个用户进行操作,开始记录数是0,插入一条记录,序号1,再插入一条2,如果删除第一条记录,再插入一条记录的序号还是2,还是有重复的可能性
我觉得没有必要让这个字段连续
使用identity还是不错的

难道你还有什么别的需求?
dafu71 2003-06-13
  • 打赏
  • 举报
回复
用SQL SERVER中的自动增加字段在删除记录后会出现不连续的现象,但是查询出来的结果可以连续出来呀!
如果需要流水号:
select (select sum(1) from 表 where 标识编号<=tem.标识编号) 序号,* from 表 tem
dlkfth 2003-06-13
  • 打赏
  • 举报
回复
NEWID()

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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