最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

兩種oracle創(chuàng)建字段自增長的實(shí)現(xiàn)方式

 更新時間:2015年07月28日 11:17:49   作者:WhyWin  
這篇文章介紹了兩種oracle創(chuàng)建字段自增長的實(shí)現(xiàn)方式,一是序列+觸發(fā)器,二是序列+顯示調(diào)用序列,需要的朋友可以參考下

mysql等其他數(shù)據(jù)庫中有隨著記錄的插入而表ID自動增長的功能,而oracle卻沒有這樣的功能,我們有以下兩種方式可以解決字段自增長的功能。
因?yàn)閮煞N方式都需要通過創(chuàng)建序列來實(shí)現(xiàn),這里先給出序列的創(chuàng)建方式。

CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];

解析:

1)INCREMENT BY用于定義序列的步長,如果省略,則默認(rèn)為1,如果出現(xiàn)負(fù)值,則代表Oracle序列的值是按照此步長遞減的。

2)START WITH 定義序列的初始值(即產(chǎn)生的第一個值),默認(rèn)為1。

3)MAXVALUE 定義序列生成器能產(chǎn)生的最大值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最大值定義,這時對于遞增Oracle序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對于遞減序列,最大值是-1。

4)MINVALUE定義序列生成器能產(chǎn)生的最小值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最小值定義,這時對于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是?10的26次方;對于遞增序列,最小值是1。

5)CYCLE和NOCYCLE 表示當(dāng)序列生成器的值達(dá)到限制值后是否循環(huán)。CYCLE代表循環(huán),NOCYCLE代表不循環(huán)。如果循環(huán),則當(dāng)遞增序列達(dá)到最大值時,循環(huán)到最小值;對于遞減序列達(dá)到最小值時,循環(huán)到最大值。如果不循環(huán),達(dá)到限制值后,繼續(xù)產(chǎn)生新值就會發(fā)生錯誤。

6)CACHE(緩沖)定義存放序列的內(nèi)存塊的大小,默認(rèn)為20。NOCACHE表示不對序列進(jìn)行內(nèi)存緩沖。對序列進(jìn)行內(nèi)存緩沖,可以改善序列的性能。

解決方式一、序列+觸發(fā)器

具體實(shí)現(xiàn)方式如下:

第一步,創(chuàng)建sequence

-- Create sequence
create sequence SEQ_T_RECV
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 50;

第二步,創(chuàng)建表

-- Create table
create table RECV_MSG
(
 id     NUMBER,
 messageid  VARCHAR2(32),
 contents  VARCHAR2(2000),
 app_flg   VARCHAR2(100),
 phonenumber VARCHAR2(2000),
 updatetime DATE default sysdate
);

第三步,建立觸發(fā)器

CREATE OR REPLACE TRIGGER "recv_trig"
 BEFORE INSERT ON recv_msg
 REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
 SELECT SEQ_T_RECV.NEXTVAL INTO :NEW.ID FROM DUAL;
END recv_trig;

第四步,測試并確認(rèn)
向表中插入一條數(shù)據(jù),查看id字段是否自動增長了。

 

解決方式二、序列+顯示調(diào)用序列

一、創(chuàng)建sequence

create sequence seq_on_test 
increment by 1 
start with 1 
nomaxvalue 
nocycle 
nocache; 

 二、建表

--建表 
drop table test; 
create table test( 
ID integer 
,stu_name nvarchar2(4) 
,stu_age number 
); 

三、插入數(shù)據(jù)(顯示調(diào)用序列的下一個值插入)

--插入數(shù)據(jù) 
insert into test values(seq_on_test.nextval,'Mary',15); 
insert into test values(seq_on_test.nextval,'Tom',16); 
 

四、查看

select * from test; 

--結(jié)果 
/* 
1 Mary 15 
2 Tom 16 
*/ 

附帶:查看序列當(dāng)前值和下一個值的查看方式

--seq的兩個方法 
select seq_on_test.currval from dual; 
select seq_on_test.nextval from dual; 

--結(jié)果 
/* 
2 
3 
*/ 
 

總結(jié)

  通過觸發(fā)器直接添加的方式比顯示調(diào)用方便一下,我們不需要哪個字段要通過哪個序列還獲取下一個值,而通過觸發(fā)器進(jìn)行執(zhí)行的添加。

以上就是本文的全部內(nèi)容,希望對大家掌握兩種oracle創(chuàng)建字段自增長的實(shí)現(xiàn)方式有所幫助。

相關(guān)文章

  • oracle 使用rownum的三種分頁方式

    oracle 使用rownum的三種分頁方式

    rownum是Oracle數(shù)據(jù)庫中的一個特有關(guān)鍵字,返回的是一個數(shù)字代表記錄的行號。這篇文章主要介紹了oracle 使用rownum的三種分頁方式,需要的朋友可以參考下
    2019-10-10
  • oracle單庫徹底刪除干凈的執(zhí)行步驟

    oracle單庫徹底刪除干凈的執(zhí)行步驟

    oracle單庫徹底刪除干凈:關(guān)閉數(shù)據(jù)庫、關(guān)監(jiān)聽、清除殘余文件、刪除用戶和組,詳細(xì)操作如下,感興趣的朋友可以參考下哈
    2013-05-05
  • Oracle 中檢查臨時表空間的方法

    Oracle 中檢查臨時表空間的方法

    這篇文章主要介紹了Oracle 中檢查臨時表空間的方法,這是一個非常重要的表空間,如果管理不當(dāng),可能會出現(xiàn)問題,讓我們看看臨時表空間管理的各種查詢,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • Oracle?VM?VirtualBox?Ubuntu設(shè)置共享文件夾方式

    Oracle?VM?VirtualBox?Ubuntu設(shè)置共享文件夾方式

    這篇文章主要介紹了Oracle?VM?VirtualBox?Ubuntu設(shè)置共享文件夾方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Navicat Premium中Oracle創(chuàng)建主鍵自增的方法

    Navicat Premium中Oracle創(chuàng)建主鍵自增的方法

    這篇文章主要介紹了Navicat Premium中Oracle創(chuàng)建主鍵自增的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Oracle中常見的33個等待事件小結(jié)

    Oracle中常見的33個等待事件小結(jié)

    在Oracle 10g中的等待事件有872個,11g中等待事件1116個。 我們可以通過v$event_name 視圖來查看等待事件的相關(guān)信息
    2013-07-07
  • ORACLE中鎖住/解鎖統(tǒng)計(jì)信息的操作代碼

    ORACLE中鎖住/解鎖統(tǒng)計(jì)信息的操作代碼

    從Oracle 10g 開始,Oracle提供了鎖定/解鎖表統(tǒng)計(jì)信息功能,它的目的是阻止數(shù)據(jù)庫自動收集統(tǒng)計(jì)信息,防止可能會產(chǎn)生/出現(xiàn)的糟糕的計(jì)劃,這篇文章主要介紹了ORACLE中鎖住/解鎖統(tǒng)計(jì)信息的操作代碼,需要的朋友可以參考下
    2023-09-09
  • oracle設(shè)置密碼復(fù)雜度及設(shè)置超時退出的功能

    oracle設(shè)置密碼復(fù)雜度及設(shè)置超時退出的功能

    我們都知道密碼策略加固的參數(shù)一般包括密碼長度、復(fù)雜度檢測、最大最小使用時間、過期警報時間、最大登錄失敗次數(shù)以及鎖定時間等設(shè)置,下面這篇文章主要給大家介紹了關(guān)于oracle設(shè)置密碼復(fù)雜度及設(shè)置超時退出功能的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • oracle表被鎖定的完美解決方法

    oracle表被鎖定的完美解決方法

    ora-00031:session marked for kill處理oracle中殺不掉的鎖一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為”killed”,但是鎖定的資源很長時間不釋放,有時實(shí)在沒辦法,只好重啟數(shù)據(jù)庫?,F(xiàn)在小編給大家分享另外一種oracle表被鎖定的解決方法,需要的的朋友參考下吧
    2017-07-07
  • oracle中關(guān)于case?when?then的使用

    oracle中關(guān)于case?when?then的使用

    這篇文章主要介紹了oracle中關(guān)于case?when?then的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

七台河市| 长丰县| 柳州市| 江口县| 鹤山市| 临漳县| 康保县| 望谟县| 余庆县| 常州市| 绥棱县| 达拉特旗| 沁水县| 嘉祥县| 盈江县| 巴彦淖尔市| 金堂县| 福贡县| 甘南县| 灵宝市| 珲春市| 邵东县| 开江县| 勃利县| 蓬安县| 海伦市| 米泉市| 高青县| 手游| 名山县| 浮山县| 龙泉市| 呈贡县| 凌源市| 博白县| 南安市| 陈巴尔虎旗| 西林县| 项城市| 盱眙县| 嘉义市|