两个表共用一序列带来的问题。

cheniqit1 2011-02-16 09:12:53
两个表共用一序列,但是当服务运行一段时间后,发现序列当前值 小于两个表的当中最大 id 。所有导致 insert nextval 的时候 有问题。
现在以确定。没有人工的改变序列值,在插入表数据的时候都是用的 nextval. 但不知道为何会出现序列当前值 小于两个表的中的最大 id
...全文
343 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoyoumou 2011-02-18
  • 打赏
  • 举报
回复 1
-- 将序列的创建语句贴出来:莫非是采用了 cycle(循环)属性?
cheniqit1 2011-02-17
  • 打赏
  • 举报
回复
莫非这个问题就没有解释了。?
sadikaqy 2011-02-17
  • 打赏
  • 举报
回复
楼主怎么不在Oracle版块里面发呢?
coleling 2011-02-16
  • 打赏
  • 举报
回复
楼主发错地方了,你这是个Oracle问题,这里是SQL Server
cheniqit1 2011-02-16
  • 打赏
  • 举报
回复
先 nextval序列,没有insert成功的话 那么也是序列号大于 表中的max(id) 才对的。现在反而是 序列号小于,这个就有点摸不着头脑了。
幸运的意外 2011-02-16
  • 打赏
  • 举报
回复
序号更新在什么时候?如果先取值在更新的话就有可能出现问题。最好把他们放到一个事物中,保证操作的一致性。
快溜 2011-02-16
  • 打赏
  • 举报
回复
什么也没说,靠猜的?
rucypli 2011-02-16
  • 打赏
  • 举报
回复
两个表共用一序列?
这是什么样的业务
cheniqit1 2011-02-16
  • 打赏
  • 举报
回复
两个表的结构 都包含一个ID 其余字段忽略。
序列阶梯是每次自增1
估计序列比表中的一个最大的max(id)少了几万吧。
序列与两个表的ID 的关系是 在insert的时候 用到这个序列,且两个表是共用一个序列的。
-晴天 2011-02-16
  • 打赏
  • 举报
回复
表结构?数据结构?如何插入?如何改变?小了多少?这个序列与id的关系???
cheniqit1 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 abcjun188 的回复:]

自己写个 序列函数 或 存储过程 ,在事务里计算 max(id) + 1 ,这种方法很常用
[/Quote]
这个解决方法是好
但问题是没有找到原因 需要分析下为什么会发生这样的现象。
cheniqit1 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sql_sf 的回复:]

引用 6 楼 cheniqit1 的回复:
先 nextval序列,没有insert成功的话 那么也是序列号大于 表中的max(id) 才对的。现在反而是 序列号小于,这个就有点摸不着头脑了。

重置种子也是有可能的
[/Quote]
这个可以确定没有重置过。
打一壶酱油 2011-02-16
  • 打赏
  • 举报
回复
自己写个 序列函数 或 存储过程 ,在事务里计算 max(id) + 1 ,这种方法很常用
sql_sf 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cheniqit1 的回复:]
先 nextval序列,没有insert成功的话 那么也是序列号大于 表中的max(id) 才对的。现在反而是 序列号小于,这个就有点摸不着头脑了。
[/Quote]
重置种子也是有可能的
cheniqit1 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coleling 的回复:]

楼主发错地方了,你这是个Oracle问题,这里是SQL Server
[/Quote] 我想问题发生的原因是一样的

22,302

社区成员

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

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