Oracle中的序列

2021-08-30 01:39:01 字數 1482 閱讀 1740

序列入門

首先建立t1表:

create table t1(

id number(10) primary key,

name varchar2(8)

);建立乙個序列:

create sequence seq1;

insert into t1(id,name) values(seq1.nextval,'a');

insert into t1(id,name) values(seq1.nextval,'b');

insert into t1(id,name) values(seq1.nextval,'c');

--提交

commit;

select * from t1;

id name

1  a

2  b

3  c

注意,沒有自動編號型別。

序列是否能連續?

t1表中name varchar2(8)這樣定義的,我們先做個錯誤示例:

insert into t1(id,name) values(seq1.nextval,'dddddddddddddddddddddddddd');

--ora-01401: 插入的值對於列過大 --oralce報錯啦

insert into t1(id,name) values(seq1.nextval,'dd');

--問題:現在dd的編號是幾?

select * from t1;

id  name

1   a

2   b

3   c

5   dd

思考:為什麼會是5,而不是4?

小結:序列有個特性,每個值只能返回一次。而管這個值用在什麼地方。

序列就象乙個變局變數(重啟以後仍存在,因為序列也是資料庫物件),可以用在任何地方,所以與表其實沒有關係(可以多個錶用乙個序列)。

select seq1.nextval x from dual;x7

在來個錯誤示例:

insert into t1(id,name) values(seq1.nextval,e);

--ora-00984: 列在此處不允許

大家說現在序列的值是多少呢?

insert into t1(id,name) values(seq1.nextval,'e');

select * from t1;

id  name

1   a

2   b

3   c

5  dd

8   e

分析:sql有語法錯誤,所以seq1.nextval沒有執行,所以值沒有用掉。

序列當前值

select seq1.nextval from dual;

--必須先執行nextval以後,currval才能呼叫。

select seq1.currval from dual;

oracle中的序列

oracle中的序列 sequence 的作用相當與sqlserver中的identify作為乙個表的自動增加且唯一標識的列 下面我就用乙個簡單的序列來實現 1.建立序列 create sequence sq sq宣告乙個序列的名稱 start with 1 宣告序列的開始值 immediate b...

oracle中的序列

什麼是序列?序列 可供多個使用者用來產生唯一數值的資料庫物件 自動提供唯一的數值 共享物件 主要用於提供主鍵值 將序列值裝入記憶體可以提高訪問效率 create sequence 語句 createsequence sequence increment by n start with n 建立序列 ...

oracle中的序列 sequence

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方,保證不會重複 執行緒同步 1 create sequence 首先要有create sequence許可權,create sequence sequence increment by n 每次...