Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
問(wèn)題:在SQL Server數(shù)據(jù)庫(kù)中,有自增列這個(gè)字段屬性,使用起來(lái)也是很方便的。而在Oracle中卻沒(méi)有這個(gè)功能,該如何實(shí)現(xiàn)呢?
答:在Oracle中雖然沒(méi)有自增列的說(shuō)法,但卻可以通過(guò)觸發(fā)器(trigger)和序列(sequence)來(lái)模式實(shí)現(xiàn)。
示例:
1、建立表
(
id number(6) not null,
name varchar2(30) not null primary key
)
2、建立序列SEQUENCE
create sequence user_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order;
語(yǔ)法:
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
--INCREMENT BY 1 -- 每次加幾個(gè)
--START WITH 1 -- 從1開(kāi)始計(jì)數(shù)
--NOMAXVALUE -- 不設(shè)置最大值
--NOCYCLE -- 一直累加,不循環(huán)
--CACHE 10; -- 緩存序列個(gè)數(shù),有助于提高效率,但可能造成跳號(hào)
3、創(chuàng)建觸發(fā)器
創(chuàng)建一個(gè)基于該表的before insert 觸發(fā)器,在觸發(fā)器中使用剛創(chuàng)建的SEQUENCE。
before insert on user
for each row
begin
select user_seq.nextval into:new.id from sys.dual ;
end;
下面就可以插入數(shù)據(jù)測(cè)試了。經(jīng)過(guò)本人證明,上述方法是可行的。
相關(guān)文章
ORACLE數(shù)據(jù)庫(kù)逐步解決ORA-12541、ORA-01034和ORA-27101、ORA-00119和ORA0013
這篇文章主要介紹了ORACLE數(shù)據(jù)庫(kù)逐步解決ORA-12541、ORA-01034和ORA-27101、ORA-00119和ORA00132過(guò)程的相關(guān)步驟,需要的朋友可以參考下2020-04-04VS2015連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)步驟
這篇文章主要介紹了VS2015連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)步驟,需要的朋友可以參考下2017-10-10Oracle數(shù)據(jù)更改后出錯(cuò)的解決方法
這篇文章主要介紹了Oracle數(shù)據(jù)更改后出錯(cuò)的解決方法,需要的朋友可以參考下2014-07-07如何解決Oracle數(shù)據(jù)表入庫(kù)中文亂碼問(wèn)題
Oracle數(shù)據(jù)庫(kù)在處理中文數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到亂碼問(wèn)題,導(dǎo)致數(shù)據(jù)無(wú)法正常顯示和處理,這是因?yàn)镺racle數(shù)據(jù)庫(kù)默認(rèn)的字符集為US7ASCII,無(wú)法識(shí)別中文字符,通過(guò)修改數(shù)據(jù)庫(kù),客戶端和應(yīng)用程序字符集,將數(shù)據(jù)轉(zhuǎn)換為正確的字符集,可以避免亂碼問(wèn)題2024-02-02oracle 11g的警告日志和監(jiān)聽(tīng)日志的刪除方法
這篇文章主要介紹了oracle 11g的警告日志和監(jiān)聽(tīng)日志的刪除方法,需要的朋友可以參考下2014-07-07ORACLE應(yīng)用經(jīng)驗(yàn)(1)
ORACLE應(yīng)用經(jīng)驗(yàn)(1)...2007-03-03DB2數(shù)據(jù)庫(kù)切換為oracle數(shù)據(jù)庫(kù)經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)
下面小編就為大家?guī)?lái)一篇DB2數(shù)據(jù)庫(kù)切換為oracle數(shù)據(jù)庫(kù)經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
相信大家無(wú)論是開(kāi)發(fā)、測(cè)試還是運(yùn)維過(guò)程中,都可能會(huì)因?yàn)檎`操作、連錯(cuò)數(shù)據(jù)庫(kù)、用錯(cuò)用戶、語(yǔ)句條件有誤等原因,導(dǎo)致錯(cuò)誤刪除、錯(cuò)誤更新等問(wèn)題。當(dāng)你捶胸頓足或嚇得腿軟時(shí),肯定希望有辦法來(lái)恢復(fù)這些數(shù)據(jù)。oracle就提供了一些強(qiáng)大的方法或機(jī)制,可以幫到有需要的你。2016-12-12優(yōu)化Oracle庫(kù)表設(shè)計(jì)的若干方法
優(yōu)化Oracle庫(kù)表設(shè)計(jì)的若干方法...2007-03-03有關(guān)Oracle數(shù)據(jù)庫(kù)的備份情況
有關(guān)Oracle數(shù)據(jù)庫(kù)的備份情況...2007-03-03