-----oracle 指定字段 自增 ,1.要先創(chuàng)建一個(gè)序列 2. 之后創(chuàng)建一個(gè)觸發(fā)器
讓客戶(hù)滿意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、賓縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
--- 序列 (序列與觸發(fā)器實(shí)現(xiàn)t_sys_organize表中F_ID字段的自動(dòng)增長(zhǎng))
create sequence t_sys_organize_F_ID_SEQUENCE
minvalue 100000
maxvalue 99999999
start with 100000
increment by 1
nocache;
--觸發(fā)器 (序列與觸發(fā)器實(shí)現(xiàn)t_sys_organize表中F_ID字段的自動(dòng)增長(zhǎng))
CREATE OR REPLACE TRIGGER t_sys_organize_F_ID_TRIGGER BEFORE INSERT ON t_sys_organize FOR EACH ROW WHEN(NEW.F_ID IS NULL)
BEGIN
SELECT t_sys_organize_F_ID_SEQUENCE.NEXTVAL INTO:NEW.F_ID FROM dual;
END;
oracle 中不能設(shè)置自動(dòng)增加,這個(gè)和其他數(shù)據(jù)庫(kù)不一樣,但是有 序列,這個(gè)是Oracle自己特有的東西,
首先創(chuàng)建序列:
create sequence seq;
這就創(chuàng)建好了,然后 seq.nextval 就會(huì)返回一個(gè)值,不會(huì)重復(fù)的值,
insert into tablename values(seq.nextval,'001','javabook');
insert into tablename values(seq.nextval,'001','javabook');
insert into tablename values(seq.nextval,'001','javabook');
看明白沒(méi)?這樣前3個(gè)id 分別是 1,2,3
將表t_uaer的字段ID設(shè)置為自增:(用序列sequence的方法來(lái)實(shí)現(xiàn))----創(chuàng)建表Create table t_user(
Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6));----創(chuàng)建序列
create sequence user_seq
increment by 1
start with 1nomaxvaluenominvaluenocache----創(chuàng)建觸發(fā)器
create or replace trigger tr_user
before insert on t_popedom_user
for each rowbeginselect user_seq.nextval into :new.id from dual;end;----測(cè)試insert into t_popedom_user(userid,loginpassword, isdisable)
values('ffll','liudddyujj', 0);
insert into t_popedom_user(userid,loginpassword, isdisable)
values('dddd','zhang', 0)
select * from t_user;
就可以看出結(jié)果。
***********************************************************************
對(duì)sequence說(shuō)明:
increment by :用于指定序列增量(默認(rèn)值:1),如果指定的是正整數(shù),則序列號(hào)自動(dòng)遞增,如果指定的是負(fù)數(shù),則自動(dòng)遞減。
start with :用于指定序列生成器生成的第一個(gè)序列號(hào),當(dāng)序列號(hào)順序遞增時(shí)默認(rèn)值為序列號(hào)的最小值 當(dāng)序列號(hào)順序遞減時(shí)默認(rèn)值為序列號(hào)的最大值。
Maxvalue:用于指定序列生成器可以生成的組大序列號(hào)(必須大于或等于start with,并且必須大于minvalue),默認(rèn)為nomaxvalue。
Minvalue:用于指定序列生成器可以生成的最小序列號(hào)(必須小于或等于starr with,并且必須小于maxvalue),默認(rèn)值為nominvalue。
Cycle:用于指定在達(dá)到序列的最大值或最小值之后是否繼續(xù)生成序列號(hào),默認(rèn)為nocycle。
Cache:用于指定在內(nèi)存中可以預(yù)分配的序列號(hào)個(gè)數(shù)(默認(rèn)值:20)。
在sequence中應(yīng)注意:
1、 第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會(huì)自動(dòng)增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL 總是返回當(dāng)前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否則會(huì)出錯(cuò)。一次NEXTVAL會(huì)增加一次SEQUENCE的值,所以如果你在同一個(gè)語(yǔ)句里面使用多個(gè)NEXTVAL,其值就是不一樣的。
2、 如果指定CACHE值,ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動(dòng)再取一組到cache。 使用cache或許會(huì)跳號(hào), 比如數(shù)據(jù)庫(kù)突然不正常down掉(shutdown abort),cache中的sequence就會(huì)丟失. 所以可以在create sequence的時(shí)候用nocache防止這種情況。
關(guān)鍵字:自增 sequence序列 increment start with
oracle:
oracle沒(méi)有自增長(zhǎng)序列,因此可以用以下方法來(lái)實(shí)現(xiàn)
1.建立表格:
createtabletable1
(
cidnumber(8)notnull,
othersvarchar2(20)
);
2.建立從1開(kāi)始的序列:
createsequenceemp_sequence
incrementby1--每次加幾個(gè)
startwith1--從1開(kāi)始計(jì)數(shù)
nomaxvalue--不設(shè)置最大值
nocycle--一直累加,不循環(huán)
nocache--不建緩沖區(qū)3.建立觸發(fā)器:
createorreplacetriggermytgr
beforeinsertontable1foreachrow
begin
selectmytgr.nextvalinto:new.cidfromdual;
end;
mysql:
createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,
a_titlevarchar(32),
a_contenttext);
文章標(biāo)題:oracle怎么寫(xiě)自增長(zhǎng),oracle 自增長(zhǎng)
文章網(wǎng)址:http://www.rwnh.cn/article4/dssdiie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、商城網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)