在oracle中使用自增欄位

來源:互聯網
上載者:User
在oracle中使用自增欄位

大家都知道,oracle是不支援auto_increment欄位的,但可以通過建立Sequence對象來使用自增序列,文法是:

SQL代碼
  1. create sequence SEQ_SUBS_ID
  2. increment by 1
  3. start with 1
  4. maxvalue 10000000000
  5. nocycle ;  

其中SEQ_SUBS_ID為序列名,increment by 1表示步長為1,start with 1表示初始值為1,maxvalue表示最大值 nocycle表示不可迴圈取值

要查看已建立的Sequence,執行的語句是:

SQL代碼
  1. select * from user_sequences;  

其中返回的SEQUENCE_NAME為序列名,LAST_NUMBER為當前值

要取得下一ID,可以使用:

SQL代碼
  1. select  序列名.nextval from 表名  

這個語句會返回多個序號(會被緩衝起來),要取得一個序號,表名使用dual(虛表)即可

使用PEAR::DB操作

PEAR::DB使用nextId($seqName)來封裝了自增序列的操作,如果是mysql,pear同樣放棄欄位自增的功能,而使用建立一個表的方法去管理自增ID,而在ORACLE中,則直接使用SEQUENCE對象操作

即在pear::DB中,要獲得下一ID,不管是使用MYSQL還是ORACLE,都使用$db -> nextId($seqName)即可,一般地$seqName為表名,當指定的序列未存在時,可使用第二參數指定自動建立

在pear內部,nextId會將$seqName按指定的格式處理,預設是加上"_seq"的尾碼,所以,如果你操作的是已存在的使用其它方式建立的序列,很可能會發生衝突,要改變這一格式,使用

PHP代碼
  1. $db -> setOption('seqname_format',"SEQ_%s");//經這樣修改,nextId('TABLE1')所操作的SEQUENCE變成了SEQ_TABLE1了(如果是預設,則是TABLE1_seq) 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.