大家都知道,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...