使用oracle數(shù)據(jù)庫(kù)中的關(guān)鍵字sequence來(lái)實(shí)現(xiàn)目的。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)慶城,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
//創(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
如何在MySQLOracle下創(chuàng)建自動(dòng)遞增字段
在MySQL下創(chuàng)建自動(dòng)遞增字段
create table article?? //先創(chuàng)建一個(gè)表
(???????
id int primary key auto_increment ? //設(shè)置該字段為自動(dòng)遞增字段
title varchar( )
);
insert into article values (null a );???? //向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)
select * from article;?? 結(jié)果如下
Id
Title
a
insert into article values (null b );
insert into article values (null c );
insert into article ?(title)? values ( d );
select * from article;?? 結(jié)果如下
Id
Title
a
b
c
d
但是oracle沒有這樣的功能 但是通過(guò)觸發(fā)器(trigger)和序列(sequence)可以實(shí)現(xiàn)
假設(shè)關(guān)鍵字段為id 建一個(gè)序列 代碼為
create sequence seq_test_ids minvalue maxvalue start with increment by nocache order ;! [if !supportLineBreakNewLine] ! [endif]
建解發(fā)器代碼為
lishixinzhi/Article/program/Oracle/201311/18903
以前用的mysql,是有自動(dòng)遞增這個(gè)屬性的,現(xiàn)在用的orlace,需要建序列來(lái)實(shí)現(xiàn)遞增,這里記錄一下:
一、先建一張表(PROJECT_LOGS)
二、表建好了,我們來(lái)建一下序列,我用的是sqldeveloper界面來(lái)建:
其實(shí)到了這里就實(shí)現(xiàn)了遞增,只是寫sql時(shí)要傳入id(SEQ_PROJECT_LOGS.Nextval);
三、創(chuàng)建觸發(fā)器:
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)遞增,如下圖所示。這樣,問題就解決了。
關(guān)于主鍵:在建表時(shí)指定primary key字句即可:
create table test(
id ?number(6) primary key,
name varchar2(30)
);
如果是對(duì)于已經(jīng)建好的表,想增加主鍵約束,則類似語(yǔ)法:
alter table test add constraint pk_id primary key(id); ?
其中add constraint 和 primary key是關(guān)鍵字,pk_id是主鍵名稱,自定義的額,只要不重復(fù)即可。
也可以自動(dòng)一些,對(duì)表的插入操作,建立一個(gè)觸發(fā)器,每當(dāng)有數(shù)據(jù)插入時(shí),觸發(fā)器自動(dòng)修改id值為序列的新值,這樣就完全實(shí)現(xiàn)自增id功能了。不過(guò)其實(shí)也沒有這個(gè)必要。因?yàn)橛|發(fā)器如果建多了,有時(shí)會(huì)比較混亂,不易管理。
可以通過(guò)設(shè)置序列(sequence)的形式實(shí)現(xiàn):\x0d\x0a第一步:創(chuàng)建sequence,讓 INCREMENT BY增長(zhǎng)速度為1,START WITH(開始值為 1)。創(chuàng)建sequence語(yǔ)句如下:\x0d\x0aCREATE SEQUENCE SEQ_NO\x0d\x0a MINVALUE 1 --最小值\x0d\x0a NOMAXvalue -----沒有最大值\x0d\x0a INCREMENT BY 1 ----每次遞增1\x0d\x0a START WITH 1 -----開始值為1\x0d\x0a NOCACHE ----------不緩存\x0d\x0a NOCYCLE ; ---------不循環(huán)\x0d\x0a第二步:每次插入的時(shí)候直接\x0d\x0a”insert into tablename(ID) values(SEQ_NO.nextVal)“即可。