oracle數(shù)據(jù)表沒(méi)有自動(dòng)增長(zhǎng)列的功能,但可以在插入數(shù)據(jù)的時(shí)候通過(guò)序列sequence實(shí)現(xiàn)id自動(dòng)增長(zhǎng)。
創(chuàng)新互聯(lián)建站專注于行唐網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供行唐營(yíng)銷型網(wǎng)站建設(shè),行唐網(wǎng)站制作、行唐網(wǎng)頁(yè)設(shè)計(jì)、行唐網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造行唐網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供行唐網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
使用oracle數(shù)據(jù)庫(kù)中的關(guān)鍵字sequence來(lái)實(shí)現(xiàn)目的。
//創(chuàng)建mySeq
create sequence mySeq
start with 1
increment by 2
maxvalue 40
minvalue 1
cycle
//創(chuàng)建用戶表
create table USER
(
Id int,
CompName varchar2(20)
)
插入語(yǔ)句可以這樣寫:
insert into USER values(mySeq.nextVal,'AA')
這樣的話每次插入的ID就是自動(dòng)遞增的
擴(kuò)展資料:
sequence用法:
create sequence 序列名稱
start with 起始數(shù)
increment by 增長(zhǎng)量
[maxvalue 值]
[minvalue 值]
[cycle 當(dāng)?shù)竭_(dá)最大值的時(shí)候,將繼續(xù)從頭開始]
[Nocycle -- 一直累加,不循環(huán)]
[Cache ]
參考資料:百度百科-oraclesequence
先在數(shù)據(jù)庫(kù)中新增一個(gè)序列,如在oracle數(shù)據(jù)庫(kù)中執(zhí)行如下語(yǔ)句新增一個(gè)名為test_seq的序列
CREATE
SEQUENCE
test_seq
INCREMENT
BY
1
--
每次加幾個(gè)
START
WITH
1
--
從1開始計(jì)數(shù)
NOMAXVALUE
--
不設(shè)置最大值
NOCYCLE
--
一直累加,不循環(huán)
以后你往某表中插入數(shù)據(jù)時(shí),直接用如下形式就行了,比如:
insert
into
test_table
VALUES
(test_seq.nextval,
......)
test_table的第一列就是你要自增的那個(gè)id,test_seq.nextval就是從新增的序列中取出下一個(gè)值,每取一次都會(huì)+1.
當(dāng)然,一般來(lái)說(shuō)不同的表需使用不同的序列,這樣它們的id可以保證連續(xù)
oracle sql developer建表的時(shí)候id字段的自動(dòng)遞增的設(shè)置方法和步驟如下:
1、首先,打開sql
server數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)新表,然后在表中創(chuàng)建id字段并選擇int類型,如下圖所示,然后進(jìn)入下一步。
2、其次,完成上述步驟后,選擇id字段,然后在下面的列屬性中找到標(biāo)識(shí)規(guī)范,如下圖所示,然后進(jìn)入下一步。
3、接著,完成上述步驟后,單擊標(biāo)識(shí)規(guī)范,可以看到默認(rèn)值為“否”,這表示不遞增,如下圖所示,然后進(jìn)入下一步。
4、然后,完成上述步驟后,將標(biāo)識(shí)規(guī)范調(diào)整為“是”,將“標(biāo)識(shí)增量”設(shè)置為1,然后單擊保存按鈕,如下圖所示,然后進(jìn)入下一步。
5、最后,完成上述步驟后,添加數(shù)據(jù)時(shí)ID將自動(dòng)遞增,如下圖所示。這樣,問(wèn)題就解決了。
Oracle 自動(dòng)生成標(biāo)識(shí)列可以用序列。
a)創(chuàng)建序列:
create sequence 序列名
start with 起始位置
increment by 增量大小
maxValue 最大值(沒(méi)有這些nomaxValue)
[cycle/nocycle(是否循環(huán))];
例如:
create sequence seq_stu increment by 1 start with 001 nomaxvalue nocycle;
b)序列中的兩個(gè)特殊屬性:
.nextVal :下一個(gè)序列的值
.currVal :當(dāng)前序列的值;
特別注意:只要用戶使用了.nextVal 那么序列值就會(huì)增加一個(gè)增量,
eg:select seq_stu.nextVal from DUAL;序列值依然會(huì)增加一個(gè)增量!
c)兩個(gè)特殊屬性的使用:
加入學(xué)生信息表的StuId列是主鍵列,需要自己增長(zhǎng):
insert into StuInfo values ('Stu'||to_char(Sysdate,'yyyymmdd')||seq_stu.nextVal,....);
最后錄入的學(xué)號(hào)就會(huì)是'Stu20111218001序列值' 。
跟你一個(gè)解決辦法吧
1. 創(chuàng)建一個(gè)序列
CREATE?SEQUENCE?SEQ_DEMO
INCREMENT?BY?1
START?WITH?0
NOMAXVALUE
NOCYCLE
NOCACHE;
2. 替換觸發(fā)器賦值部分
:NEW.ord_id?:=?to_char(sysdate,'yyyyMMdd')?||?lpad(to_char(mod(SEQ_DEMO.nextval,1000)),3,'0')