日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracel 中序列

發布時間:2024/4/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracel 中序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oracel 中序列

一 、 前言

  • 做過web開發的人員基本上都知道,數據庫表中的主鍵值有的時候我們會用數字類型的并且自增。這樣mysql、sql server中的都可以使用工具創建表的時候很容易實現。但是oracle中沒有設置自增的方法,一般情況我們會使用序列和觸發器來實現主鍵自增的功能。下面這面文章主要介紹序列。
  • 二、 什么是序列:

  • 序列: 是oacle提供的用于產生一系列唯一數字的數據庫對象。
  • 三 、 序列的作用:

  • 自動提供唯一的數值
  • 共享對象
  • 主要用于提供主鍵值
  • 將序列值裝入內存可以提高訪問效率
  • 四、 創建序列

  • 要有創建序列的權限 create sequence 或 create any sequence
  • 創建序列的語法:

    CREATE SEQUENCE sequence //創建序列名稱 [INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果 是負數就遞減 默認是1 [START WITH n] //開始的值,遞增默認是minvalue 遞減是 // maxvalue[{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循環/不循環 [{CACHE n | NOCACHE}];//分配并存入到內存中NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用 CURRVAL 中存放序列的當前值 NEXTVAL 應在 CURRVAL 之前指定 ,二者應同時有效Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1 Cycle cache 2; //先nextval 后 currval Select seqEmp.nextval from dual; Select seqEmp.currval from dual; Cache<max-min/increment//解釋 { Create 創建 Sequence 序列 seqEmop 序列名稱 Increment by 步長 Stat with 1 開始值 Maxvalue 最大值 Minvalue 最小值Cycle 循環 nocycle 不循環 Cache 緩存 Cache<maxvalue-minvalue/increment by//一般不采用緩 存 Nextvalue 下一個 Currval 當前值}
  • CYCLE和NOCYCLE 表示當序列生成器的值達到限制值后是否循環。CYCLE代表循環,NOCYCLE代表不循環。如果循環,則當遞增序列達到最大值時,循環到最小值;最小值為1。對于遞減序列達到最小值時,循環到最大值。如果不循環,達到限制值后,繼續產生新值就會發生錯誤。
  • MINVALUE定義序列生成器能產生的最小值。選項NOMAXVALUE是默認選項,代表沒有最小值定義,這時對于遞減序列,系統能夠產生的最小值是?10的26次方;對于遞增序列,最小值是1。
  • MAXVALUE 定義序列生成器能產生的最大值。選項NOMAXVALUE是默認選項,代表沒有最大值定義,這時對于遞增Oracle序列,系統能夠產生的最大值是10的27次方;對于遞減序列,最大值是-1。
  • CACHE(緩沖)定義存放序列的內存塊的大小,默認為20。NOCACHE表示不對序列進行內存緩沖。對序列進行內存緩沖,可以改善序列的性能。 緩存選項會造成數據丟失,當實例異常關閉時。
  • 五 、 實例

    //實例應用//實現id的自動遞增//第一步create table cdpt(id number(6),name varchar2(30),constraint pk_id primary key(id));Create sequence seq_cdptIncrement by 1Start with 1Maxvalue 999999Minvalue 1Nocyclenocacheinsert into cdpt values(seq_cdpt.nextval,’feffefe’);commit;select * from cdpt;

    六 、 什么時候出現裂縫

  • 事務回滾
  • 系統異常
  • 多個表同時使用一個序列
  • 七、怎么修改序列

  • 語法

    //修改序列的增量, 最大值, 最小值, 循環選項, 或是否裝入內存 alter SEQUENCE sequence //創建序列名稱[INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減 默認是1[START WITH n] //開始的值,遞增默認是minvalue 遞減是maxvalue`這里寫代碼片`[{MAXVALUE n | NOMAXVALUE}] //最大值[{MINVALUE n | NOMINVALUE}] //最小值[{CYCLE | NOCYCLE}] //循環/不循環[{CACHE n | NOCACHE}];//分配并存入到內存中例如:Alter sequence seqEmp maxvalue 5;Select seqEmp.nextval from dual;
  • 修改序列的注意事項
  • 必須是序列的擁有者或對序列有ALTER權限
  • 只有將來的序列值會被改變
  • 改變序列的初始值只能通過刪除序列之后重建序列的方法實現
  • 八、 怎么刪除序列

  • 使用drop sequence 語句刪除序列
  • 刪除之后序列不能再次被使用
  • 總結

    以上是生活随笔為你收集整理的oracel 中序列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。