序列入門
首先建立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 每次...