1樓:
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、createsequence
你首先要有createsequence或者createanysequence許可權,
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數
nomaxvalue--不設定最大值
nocycle--一直累加,不迴圈
cache10;
一旦定義了emp_sequence,你就可以用currval,nextval
currval=返回sequence的當前值
nextval=增加sequence的值,然後返回sequence值
比如:emp_sequence.currval
emp_sequence.nextval
可以使用sequence的地方:
-不包含子查詢、snapshot、view的select語句
-insert語句的子查詢中
-nsert語句的values中
-update的set中
可以看如下例子:
insertintoempvalues
(empseq.nextval,'lewis','clerk',7902,sysdate,1200,null,20);
selectempseq.currvalfromdual;
但是要注意的是:
-第一次nextval返回的是初始值;隨後的nextval會自動增加你定義的incrementby值,然後返回增加後的值。currval總是返回當前sequence的值,但是在第一次nextval初始化之後才能使用currval,否則會出錯。一次nextval會增加一次sequence的值,所以如果你在同乙個語句裡面使用多個nextval,其值就是不一樣的。
明白?-如果指定cache值,oracle就可以預先在記憶體裡面放置一些sequence,這樣訪問的快些。cache裡面的取完後,oracle自動再取一組到cache。使用cache或許會跳號,比如資料庫突然不正常down掉(shutdownabort),cache中的sequence就會丟失.
所以可以在createsequence的時候用nocache防止這種情況。
2、altersequence
你或者是該sequence的owner,或者有alteranysequence許可權才能改動sequence.可以alter除start至以外的所有sequence引數.如果想要改變start值,必須dropsequence再re-create.
altersequence的例子
altersequenceemp_sequence
incrementby10
maxvalue10000
cycle--到10000後從頭開始
nocache;
影響sequence的初始化引數:
sequence_cache_entries=設定能同時被cache的sequence數目。
可以很簡單的dropsequence
dropsequenceorder_seq;
2樓:汗笑天
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2oracle建立序列地可以用工具建立,也可以用**建立,但dvvislizer建立的序類好像是不能用的。
oracle表中怎麼建序列
3樓:
oracle表中建立序列語法:
create sequence name
[increment by n]
[start with n]
示例:increment by n:表明值每次增長n(步長)。
start with n: 從n開始。
: 設定最大值。
: 設定最小值,start with不能小於最小值。
cycle | nocycle : 是否迴圈,建議不使用
cache n | nocache : 是否啟用快取。
2、插入資料到表中
示例:insert into emp values
(emp_sequence .nextval, 'lewis', 'clerk',7902, sysdate, 1200, null, 20);
oracle資料庫系統是目前世界上流行的關聯式資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的資料庫解決方案。
oracle資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為乙個通用的資料庫系統,它具有完整的資料管理功能;作為乙個關聯式資料庫,它是乙個完備關係的產品;作為分布式資料庫它實現了分布式處理功能。
4樓:百小度
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、create sequence
你首先要有create sequence或者create any sequence許可權,
create sequence emp_sequence
increment by 1 -- 每次加幾個
start with 1 -- 從1開始計數
nomaxvalue -- 不設定最大值
nocycle -- 一直累加,不迴圈
cache 10;
一旦定義了emp_sequence,你就可以用currval,nextval
currval=返回 sequence的當前值
nextval=增加sequence的值,然後返回 sequence 值
比如:emp_sequence.currval
emp_sequence.nextval
可以使用sequence的地方:
- 不包含子查詢、snapshot、view的 select 語句
- insert語句的子查詢中
- nsert語句的values中
- update 的 set中
可以看如下例子:
insert into emp values
(empseq.nextval, 'lewis', 'clerk',7902, sysdate, 1200, null, 20);
select empseq.currval from dual;
但是要注意的是:
- 第一次nextval返回的是初始值;隨後的nextval會自動增加你定義的increment by值,然後返回增加後的值。currval 總是返回當前sequence的值,但是在第一次nextval初始化之後才能使用currval,否則會出錯。一次nextval會增加一次sequence的值,所以如果你在同乙個語句裡面使用多個nextval,其值就是不一樣的。
明白?- 如果指定cache值,oracle就可以預先在記憶體裡面放置一些sequence,這樣訪問的快些。cache裡面的取完後,oracle自動再取一組到cache。 使用cache或許會跳號, 比如資料庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失.
所以可以在create sequence的時候用nocache防止這種情況。
2、alter sequence
你或者是該sequence的owner,或者有alter any sequence 許可權才能改動sequence. 可以alter除start至以外的所有sequence引數.如果想要改變start值,必須 drop sequence 再 re-create .
alter sequence 的例子
alter sequence emp_sequence
increment by 10
maxvalue 10000
cycle -- 到10000後從頭開始
nocache ;
影響sequence的初始化引數:
sequence_cache_entries =設定能同時被cache的sequence數目。
可以很簡單的drop sequence
drop sequence order_seq;
5樓:匿名使用者
-- create sequence
create sequence sn increment by 1 start with 1
建立乙個序列
-- create table
create table aaa2
( sn integer not null,id char(18) null,
name char(18) null,
) insert into aaa2 values(sn.nextval,'test','test')
oracle 建立序列
6樓:匿名使用者
create sequence emp_sequence --序列名
increment by 1 -- 每次加幾個start with 1 -- 從1開始計數nomaxvalue -- 不設定最大值nocycle -- 一直累加,不迴圈cache 10;
oracle語句中如何在表的某一列下建立序列
7樓:
create table transaction3(transaction_id numbergenerated by default as identity (start with 100 increment by 10),
holding_id number,transaction_type number,transaction_date date,credit_value number,debit_value number);identity columns 是oracle 12c新特性, 如果你要再12c之前實現該功能 一般要用到 trigger.
oracle序列怎麼寫,oracle表中怎麼建序列
sql create sequence test sequence2 2 increment by 1 每次遞增13 start with 1 從1開始4 nomaxvalue 沒有最大值5 minvalue 1 最小值 16 nocycle 不迴圈sequence created.上面的語句,建立...
oracle資料庫表中,插入資料的時候如何產生母 數字編號
先建立乙個sequence 然後給插入資料的表寫個trigger before insert 的時候 設定這個欄位的值為 sd sequence.nextval create sequence 表名 seq increment by 1 start with 100000001 nocache in...
在oracle中如何將表中所有資料加到另表中
create table newtablename as select from oldtablename insert into tab2 id,num select id,num,from tab1 where id 12 如果是全部複製的話 這個where 條件可以省略。其實你簡單的而理解後面...