sql主键自增发生异常,用了20年数据库第一次遇见

qj_198127 2020-10-29 08:26:31
CREATE TABLE [dbo].[dt_eduexamResultDetail](
[id] [int] IDENTITY(1,1) NOT NULL,
[eduexamresultid] [int] NOT NULL,
[examDetailID] [int] NOT NULL,
[answer] [varchar](5) NULL,
[isRight] [int] NOT NULL
) ON [PRIMARY]

目前数据 select count(*) from dt_examResultDetail 1374610
select max(id) from dt_examResultDetail 1449092

select * from dt_examResultDetail where id>1417580 查询出9882行 id最大是1427587

select * from dt_examResultDetail where id>1427587 查询出行是21465行,id最大是1449092

为什么where id>1417580查询不出全部,且在ID<1427587 前面,表的任意字段都可以作为条件查询出记录。后面的其它字段查询不出记录,比如select * from dt_examResultDetail where id>1427587 and examresultid=15768 有记录 但是用select * from dt_examResultDetail where examresultid=15768 就没有记录。跪求原因,奔溃!!
...全文
445 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2020-11-10
  • 打赏
  • 举报
回复
没有这么怪的吧
wwfxgm 2020-11-10
  • 打赏
  • 举报
回复
学习了,说的都有道理。
shoppo0505 2020-11-04
  • 打赏
  • 举报
回复
引用 4 楼 薛定谔的DBA 的回复:
没啥离奇地方,id不连续。比如你插入1000行,删除前900行,现在最大值1000,总数100行。
这个回复靠谱。
lich2005 2020-11-04
  • 打赏
  • 举报
回复
可能是表坏了,用 DBCC CHECKTABLE ('tableName') 或者 dbcc checkdb('databaseName') 检查一下看看,另外最好看看你的磁盘是不是比较可靠,有坏道没有了?。 这种情况是比较少见的。
薛定谔的DBA 2020-11-01
  • 打赏
  • 举报
回复
没啥离奇地方,id不连续。比如你插入1000行,删除前900行,现在最大值1000,总数100行。
卖水果的net 版主 2020-10-30
  • 打赏
  • 举报
回复
大胆假设一下: 这张表的 ID 列,有一个索引(或唯一索引、或是主键),这个索引的数据出错了,这个属于物理错误,不可修复。 解决方法:把这个索引删掉,重建一下,就应该没有问题了。
sxq129601 2020-10-30
  • 打赏
  • 举报
回复
这个就比较离奇了,你可以再建一张同样的表,insert into select ...,查询新表试试呢
吉普赛的歌 版主 2020-10-30
  • 打赏
  • 举报
回复
#2 果版说的是对的, 一般就是表损坏了。 直接创建一个新表, 把数据导入就是。

34,590

社区成员

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

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