电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle中的序列SEQUENCE詳解

瀏覽:208日期:2023-03-12 15:25:03

一、序列介紹

Oracle的序列是一種數(shù)據(jù)庫對象,主要作用是用來產(chǎn)生唯一值。序列被創(chuàng)建以后可以通過數(shù)據(jù)字典找到序列對象,因此序列可以被多個對象共享。

二、創(chuàng)建序列

序列使用CREATE SEQUENCE語法進(jìn)行創(chuàng)建:

CREATE SEQUENCE sequence 
[INCREMENT BY n]
 [START WITH n]
 [{MAXVALUE n | NOMAXVALUE}]
 [{MINVALUE n | NOMINVALUE}]
 [{CYCLE | NOCYCLE}]
 [{CACHE n | NOCACHE}];
  • NCREMENT BY:用于定義序列的步長,如果省略,則默認(rèn)為1,如果是負(fù)值,則代表序列的值是遞減的。
  • START WITH:定義序列的初始值(即產(chǎn)生的第一個值),默認(rèn)為1。
  • MAXVALUE:定義序列能生成的最大值。NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最大值,這時,對于遞增序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對于遞減序列,最大值是-1。
  • MINVALUE:定義序列能生成的最小值。NOMINVALUE是默認(rèn)選項(xiàng),代表沒有最小值,這時,對于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是負(fù)的10的26次方;對于遞減序列,最小值是1。
  • CYCLE和NOCYCLE:表示當(dāng)序列生成器的值達(dá)到限制后是否循環(huán)。如果循環(huán),當(dāng)遞增序列達(dá)到最大值時,循環(huán)到最小值;對于遞減序列,達(dá)到最小值時,循環(huán)到最大值。如果不循環(huán),達(dá)到限制值后,繼續(xù)產(chǎn)生新值就會發(fā)生錯誤。
  • CACHE:定義存放序列的內(nèi)存塊的大小,默認(rèn)為20。NOCACHE表示不對序列進(jìn)行內(nèi)存緩沖。對序列進(jìn)行內(nèi)存緩沖,可以改善序列的性能。

例如:

CREATE SEQUENCE invoice_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 9999999
NOCYCLE NOCACHE;

三、查詢序列

一旦序列被創(chuàng)建,序列的創(chuàng)建代碼就被文本化在數(shù)據(jù)字典中,可以在user_objects數(shù)據(jù)字典中看到,如:

SELECT object_name,object_id,object_type  FROM user_objects WHERE object_name = "INVOICE_SEQ";

在user_sequences表中保存了序列明細(xì)信息:

SELECT sequence_name, min_value, max_value, increment_by, last_number  FROM user_sequences;

四、使用序列

NEXTVAL和CURRVAL偽列

  • NEXTVAL:返回下一個可用的序列值,它每次返回一個唯一的被引用值,實(shí)際對不同的用戶也是如此。當(dāng)使用sequence.NEXTVAL時,一個新的序列數(shù)被產(chǎn)生并且當(dāng)前的序列數(shù)被放入CURRVAL。
  • CURRVAL:獲得當(dāng)前的序列值。在首次使用NEXTVAL之前就使用CURRVAL的話,會報(bào)錯。

使用如下 :

SELECT invoice_seq.CURRVAL,invoice_seq.NEXTVAL FROM DUAL;

INSERT INTO invoice  (invoice_id, vendor_id, invoice_number, invoice_total  )
      VALUES (invoice_seq.NEXTVAL, 10, "INV" || invoice_seq.CURRVAL, 100  );

可以在下面的上下文中使用NEXTVAL和CURRVAL:

  • 不是子查詢的一部分的SELECT語句的字段列表。
  • INSERT語句中子查詢的SELECT列表。
  • INSERT語句中的VALUES子句。
  • UPDATE語句中的SET子句。

不能再以下的上下文中使用NEXTVAL和CURRVAL:

  • 視圖的SELECT列表。
  • 帶DISTINCT的SELECT語句。
  • 帶GROUP BY、HAVING或ORDER BY子句的SELECT語句。
  • 在SELECT、DELETE或UPDATE語句中的子句。
  • 在CREATE TABLE或ALTER TABLE語句中的DEFAULT表達(dá)式。

另外要注意,ROLLBACK并不能使序列值回滾。

五、修改序列

如:

ALTER SEQUENCE invoice_seq     INCREMENT BY 2 MAXVALUE 10   NOCACHE  NOCYCLE;

修改序列時,有如下幾個限制:

  • 不能該表序列的起始值。
  • 最小值不能大于當(dāng)前值。
  • 最大值不能小于當(dāng)前值。
  • 修改后的序列規(guī)則不會影響以前的序列值,只有未來的序列值會受到影響。
  • 用戶必須具有ALTER SEQUENCE的權(quán)限。

六、刪除序列

DROP SEQUENCE invoice_seq;

七、創(chuàng)建自增序列

1、創(chuàng)建一個序列

create sequence sq_recid 
minvalue 1 maxvalue 999999  increment by 1   start with 1 noCYCLE;

2、創(chuàng)建一個觸發(fā)器

create or replace trigger  trg_test
  before  insert on test for each row
begin
  select sq_recid.nextval into :new.ID from dual;
end;

alter  trigger trg_test  enable;

3、在C#中也可以手工插入序列到表中

string sql="insert into test(ID,otherCol)value (Sql_recid.nextval,***)
    retuing ID into :ID"

到此這篇關(guān)于Oracle序列SEQUENCE的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

標(biāo)簽: Oracle
相關(guān)文章:
主站蜘蛛池模板: 一点车讯-汽车网站,每天一点最新车讯! | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 视频直播 -摄影摄像-视频拍摄-直播分发 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 深圳市源和塑胶电子有限公司-首页 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 福建成考网-福建成人高考网 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 超声波反应釜【百科】-以马内利仪器 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 合肥卓创建筑装饰,专业办公室装饰、商业空间装修与设计。 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 周口市风机厂,周鼓风机,河南省周口市风机厂| 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 精密光学实验平台-红外粉末压片机模具-天津博君 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 |