Oracle建立序列仍然違反唯一約束的問題

2021-09-27 08:53:27 字數 713 閱讀 3580

--建立索引

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;

然後繼續插入資料就沒有問題了。

可以推理出乙個問題---建立序列應該最好在建立表之後,插入資料之前。

如果有錯歡迎指正,侵刪。。。。。

Oracle建立序列

序列的優點 1 自動的產生唯一的資料 2 產生唯一的值,用於填充主鍵 3 可以在memory中進行快取 建立序列 create sequence increment by n 間隔 start with n 起始位 maxvalue n nomaxvalue 最大值 無限大 minvalue n 最...

Oracle建立序列

所謂序列,在oracle中就是乙個物件,這個物件用來提供乙個有序的資料列,這個有序的資料列的值都不重複。1.序列可以自動生成唯一值 2.是乙個可以被共享的物件 3.典型的用來生成主鍵值的乙個物件 4.可以替代應用程式 5.當sequence的值存放在快取中時可以提高訪問效率。create seque...

Oracle 建立序列

概念 所謂序列,在oracle中就是乙個物件,這個物件用來提供乙個有序的資料列,這個有序的資料列的值都不重複。1.序列可以自動生成唯一值 2.是乙個可以被共享的物件 3.典型的用來生成主鍵值的乙個物件 4.可以替代應用程式 5.當sequence的值存放在快取中時可以提高訪問效率。建立序列語法 cr...