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

cheniqit1 2011-02-16 09:12:53
两个表共用一序列,但是当服务运行一段时间后,发现序列当前值 小于两个表的当中最大 id 。所有导致 insert nextval 的时候 有问题。
现在以确定。没有人工的改变序列值,在插入表数据的时候都是用的 nextval. 但不知道为何会出现序列当前值 小于两个表的中的最大 id
...全文
299 15 打赏 收藏 转发到动态 举报
写回复
用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,209

社区成员

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

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