历史数据 和 自增序列 的问题, 请大神指教

1 创建一张新表
-- Create table
create table T_TEST
(
SEQ_ID NUMBER not null,
NAME VARCHAR2(500)
);

create unique index IDX_TEST on T_TEST (SEQ_ID); -- 唯一索引

  1. 创建序列
    -- Create sequence

create sequence SEQ_TEST
minvalue 0
maxvalue 999999999999
start with 1
increment by 1
nocache;

  1. 插入一些数据,seq_id字段不用自增长的

  2. into T_TEST(SEQ_ID, NAME)

values (1, 'zhou');
insert into T_TEST(SEQ_ID, NAME)
values (2, 'nick');
insert into T_TEST(SEQ_ID, NAME)
values (3, 'jack');
insert into T_TEST(SEQ_ID, NAME)
values (4, 'cat');
insert into T_TEST(SEQ_ID, NAME)
values (5, 'food');

4.插入数据,seq_id字段用自增长的
insert into T_TEST(SEQ_ID, NAME)
values (seq_test.nextval, 'cook');

  1. 如何保证自增的序列和原有的seq_id 不重复了

clipboard.png

阅读 2.3k
2 个回答

自增长的序列可以设置起始id,你可以先取得历史数据id的max值,然后根据这个max值+1来设置自增长序列的初始值。

这个明显是用法的问题,表里面已经有历史数据了,序列的min value还设置1,这不是找事吗?
具体方法可以按照min的回复,修改序列的起始值,如:

alter sequence SEQ_TEST
minvalue 100;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进