創建oracle序列

序列(sequence)定義存儲在數據字典中,序列通過提供唯一的數值順序表用于簡化程序設計工作。當一個序列第一次查詢調用的時候,它將返回一個預訂值。在隨后的每一次查詢中,序列將產生一個按其指定的增量增長的值。序列是可以循環的,或者是連續增加的,直到指定的最大值為止。

使用sql命令創建序列的語法:

CREATE SEQUENCE sequence_name          /*將要創建的序列名稱*/ 

[INCREMENT BY integer]                                    /*遞增或者遞減值*/

[START WITH integer]                                         /*初始值*/

[MAXVALUE integer]                                            /*最大值*/

[MINVALUE integer]                                             /*最小值*/

[CACHE integer|NOCACHE]                             /*高速緩沖區設置*/

INCREMENT BY :指定序列遞增或者遞減的間隔數值。

 START WITH:序列的起始值,若不指定該值,對升序序列,將使用該序列默認的最小值,對于降序序列將使用該序列默認的最大值

MAXVALUE:序列可以允許的最大值

MINVALUE:序列可以允許的最小值

CACHE:由數據庫預分配并存儲的值得數目。默認值為20

Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
Connected as scott
 
SQL>
SQL> --創建BASICDATA_VENDOR表VENDOR_OID要使用的序列
SQL> -- Create sequence
SQL> create sequence SEQ_BASICDATA_VENDOR_OID
  2  minvalue 1
  3  maxvalue 999999
  4  start with 1001
  5  increment by 1
  6  cache 20;
 
Sequence created
 
SQL> commit;
 
Commit complete
 
SQL> select SEQ_BASICDATA_VENDOR_OID.NEXTVAL from dual;
 
   NEXTVAL
----------
      1001
 
SQL> select SEQ_BASICDATA_VENDOR_OID.NEXTVAL from dual;
 
   NEXTVAL
----------
      1002
 
SQL> drop sequence SEQ_BASICDATA_VENDOR_OID;
 
Sequence dropped
 
SQL> commit;

Oracle序列的用處,在一些情況很多人習慣使用select sysguid() from dual查詢出的32位字符串去做一個table的主鍵

雖然sysguid唯一性非常好,但是在做表的維護和業務報表排序時sysguid并不具有數據進入數據庫的先后次序和良好的排序功能

其實可以將蘇列看成是簡單的流水號,這樣在表中在取一個字段比如部門代號和這個流水號合起來做主鍵這樣對于表的維護和查看會更好

當創建號一個序列后,可以在pl/sql使用:

vNO number;

select  序列名稱.nextval into vNO from dual;

在作insert(插入數據時)將vNO作為表中的一個id值value插入使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值