在oracle中使用自增字段

2021-06-18 20:17:23 字數 1140 閱讀 7879

大家都知道,oracle是不支援auto_increment欄位的,但可以通過建立sequence物件來使用自增序列,語法是:

sql**

create

sequence

seq_subs_id 

increment 

by1 

start 

with

1 maxvalue 10000000000 

nocycle ;  

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

要檢視已建立的sequence,執行的語句是:

sql**

select

* from

user_sequences;  

其中返回的sequence_name為序列名,last_number為當前值

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

sql**

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**

$db-> setoption(

'seqname_format'

,"seq_%s"

);//經這樣修改,nextid('table1')所操作的sequence變成了seq_table1了(如果是預設,則是table1_seq)

oracle自增字段

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...

oracle自增字段

sqlserver 和mysql都有自增長的功能,但是oracle必須結合sequence序列 觸發器才能夠實現自動增長 1 create table table name id number,name varchar2 50 2 create sequence sequence name minv...

在ORACLE中建立自增字段

通過建立序列來實現 oracle sequence的簡單介紹 在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,cr...