为了账号安全,请及时绑定邮箱和手机立即绑定

sql server有关自增主键问题。

sql server有关自增主键问题。

阿晨1998 2018-12-07 13:08:20
最近碰到一个很坑爹的事情。 我数据库有张表,它又有一主键,有自增的属性(+1)。现在主键已经到了1543,其中不可避免有断层(就是主键ID 为100 或 112被删除)。 问题    情况一:我现在添加数据时主键ID 重新从1开始自增(这是我现在出现的问题,主键ID重新从1开始自增)。     情况二:我现在添加数据时主键ID 是那些缺失的ID(弃)。
查看完整描述

9 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

情况一:从1开始自增长只能通过Truncate Table清空所有数据。

情况二:使用 Set Identity_Insert 表名 Off 语句关闭 Id 列写入保护,手动写入断层Id,然后再 Set Identity_Insert 表名 On

查看完整回答
反对 回复 2019-01-07
?
波斯汪

TA贡献1811条经验 获得超4个赞

1. 要从1开始自增,需要用TRUNCATE TABLE清空表中所有数据。

2. 

a) 删除时不要直接删除,通过增加一个字段标识出已删除的记录。

b) 或者在代码中手动计算ID

查看完整回答
反对 回复 2019-01-07
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

可以 确定没有用TRUNCATE TABLE删除,只是用了delete删除了几条数据而已。

补充   情况一:我现在添加数据时主键ID 重新从1开始自增(这个是我现在每添加一条数据它是重新从1开始自增的,现在已经添加到了5,即添加了5条数据了)

    情况二:我现在添加数据时主键ID 是那些缺失的ID(即我现在添加信息是替补了我删除的ID)

可能以上描述有问题导致 dudu 您老看花了眼,在此深感愧疚。

查看完整回答
反对 回复 2019-01-07
?
DIEA

TA贡献1820条经验 获得超2个赞

@烟雨中闲置: 看三楼飞扬的尘埃的回答

查看完整回答
反对 回复 2019-01-07
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

可以替换成Uniqueidentifier类型的字段 对应C#的类型是Guid  数据库中可以采用newId()来替代自动增长。

查看完整回答
反对 回复 2019-01-07
?
aluckdog

TA贡献1847条经验 获得超7个赞

最好的方法是删除的数据不要从表中移除,而是将其状态至为已删除。当然,试情况而定,如果是完关紧要的数据,可以直接删除。

查看完整回答
反对 回复 2019-01-07
  • 9 回答
  • 0 关注
  • 707 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信