Oracle创建序列仍然违反唯一约束的问题

错误总结 专栏收录该内容
2 篇文章 0 订阅
--创建索引
create sequence seq_test;
--插入数据
insert into s_emp(id,last_name) values(seq_test.nextval,'HUAAN');

先创建序列,再插入数据,正常的情况下不会有问题,但是报错了:

然后去查了下,据说是在建表的时候已经插入了部分数据,导致sequence的开始自增序列不为当前id最大值。
所以要重新设置sequence的自增起始值。也就是重新创建序列。

--删除索引
drop sequence seq_test;

--重新创建索引
create sequence seq_test
increment by 1
--此处需要去查看表中id最大值,由于我的表中有25条数据,所以从26开始。
start with 26
nomaxvalue
nocycle
cache 10;

然后继续插入数据就没有问题了。

可以推理出一个问题---创建序列应该最好在创建表之后,插入数据之前。

如果有错欢迎指正,侵删。。。。。

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

butterfly orchid

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值