Oracle中不向其它數(shù)據(jù)庫一樣,有自動增長型數(shù)據(jù)類型,但可以變通處理
創(chuàng)新互聯(lián)是一家專業(yè)提供沁縣企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為沁縣眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
數(shù)據(jù)表信息為 Test(TID,TNAME),需要把TID設(shè)置為自動增值型字段,TID一般是int型
首先 新建一個序列AUTOID,以后其它表或觸發(fā)器也可調(diào)用:
起始為1 增值為1 順序增值
CREATE SEQUENCE AUTOID
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
然后建立觸發(fā)器代碼如下:
Test表 TID字段 AUTOID序列 不要更改DUAL臨時表名
CREATE TRIGGER TRG_AutoID BEFORE
INSERT ON TEST
FOR EACH ROW begin
SELECT AUTOID.NEXTVAL
INTO :NEW.TID
FROM DUAL;
End TRG_AutoID;
最后SQL測試 insert into Test(tname) values('abc');
當然也可以采用 insert into Test(TID,tname) values(AUTOID.nextval,'libin');
在選擇Select時,注意有兩對:
AUTOID.currval 表示當前行的ID值
AUTOID.nextval 表示當前行的ID+1值
例:SELECT empseq.currval FROM DUAL;
oracle表中創(chuàng)建序列語法:
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]? ? ? ? ? ?
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
示例:
increment by n:表明值每次增長n(步長)。
start with n: 從n開始。
{MAXVALUE n | NOMAXVALUE}: 設(shè)置最大值。
{MINVALUE n | NOMINVALUE}: 設(shè)置最小值,start with不能小于最小值。
CYCLE | NOCYCLE? ? ? ? ? : 是否循環(huán),建議不使用
CACHE n | NOCACHE? ? : 是否啟用緩存。
2、插入數(shù)據(jù)到表中
示例:
INSERT INTO emp VALUES
(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
Oracle數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強,適用于各類大、中、小、微機環(huán)境。它是一種高效率、可靠性好的 適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案。
ORACLE數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),作為一個通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個關(guān)系數(shù)據(jù)庫,它是一個完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫它實現(xiàn)了分布式處理功能。
擴展資料:
sql server數(shù)據(jù)庫里建序列:
alter table cust_info?add?sequence int
insert into cust_info (sequence)
select row_number() over(order?by?cust_id) as cust_id_seq from cust_info
比如你要按name 進行g(shù)roup by ,然后按name排序
select?row_number()?over?(order?by?name)?rn,name,sum(計算值)?from?表名?group?by?name
需要先創(chuàng)建序列,然后nextval添加數(shù)據(jù)使其自動生成序號。
1、創(chuàng)建表:
create?table?test
(id?int,
name?varchar2(20));
2、創(chuàng)建序列:
Create?sequence?seq_test_id
Increment?by?1
Start?with?1
Maxvalue?999999
Minvalue?1
Nocycle
nocache;
3、插入數(shù)據(jù):
insert?into?test?values?(seq_test_id.nextval,'badkano');
4、再插入一條數(shù)據(jù):
insert?into?test?values?(seq_test_id.nextval,'百度知道團長');
這樣可見,序號是添加成功的。
如果沒有必須累加1的要求,允許跳號的話,最好使用sequence,
沒有性能問題。
可以在創(chuàng)建sequence的時候設(shè)定開始值就是100000,插入的時候用select
sequenceName.Nextval
就可以自增長。
如果不采用這種方式,可以新建一張表存放當前ID的最大值,每次從這里取值,然后再update
+
1.
記得需要for
update鎖表,以免并發(fā)時號碼重復(fù)。不建議這種方式,性能比較差
分享標題:oracle如何增加序號,oracle 添加序號
分享鏈接:http://chinadenli.net/article26/hohcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、虛擬主機、、網(wǎng)站收錄、建站公司、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)