oracle中自增主鍵設定

2021-10-10 17:58:57 字數 1897 閱讀 5349

mysql中主鍵自增設置為auto_increment屬性,oracle中沒有該屬性,而是通過sequence序列,間接來實現主鍵自增功能

參考:

序列(sequence): 又叫序列生成器,用於提供一系列的數字,開發人員使用序列生成唯一鍵。每次訪問序列,序列按照一定的規律增加或者減少.

序列建立引數說明:

create sequence seqname    		//序列名字         

increment by

1//每次自增1, 也可寫非0的任何整數,表示自增,或自減

start

with

1//以該值開始自增或自減

maxvalue 1.0e20 //最大值;設定nomaxvalue表示無最大值

minvalue 1

//最小值;設定nominvalue表示無最大值

cycle

or nocycle //設定到最大值後是否迴圈;

cache 20

//指定可以快取 20 個值在記憶體裡;如果設定不快取序列,則寫nocache

order

or noorder //設定是否按照請求的順序產生序列

ps:測試小案列

1 建立demo表

create

table userinfo(

id int

primary

key,

/*主鍵*/

username varchar2(10)

,

password varchar2(20)

);

2 建立序列

create sequence userinfo_tb_seq 

minvalue 1

maxvalue 99999999

increment by

1start

with1;

/*步長為1*/

3 建立觸發器

create

orreplace

trigger userinfo_tb_tri

before insert

on userinfo /*觸發條件:當向表userinfo執行插入操作時觸發此觸發器*/

for each row

/*對每一行都檢測是否觸發*/

begin

/*觸發器開始*/

select userinfo_tb_seq.nextval into :new.id from dual;

/*觸發器主題內容,即觸發後執行的動作,在此是取得序列userinfo_tb_seq的下乙個值插入到表userinfo中的id欄位中*/

end;

4 插入資料

insert

into userinfo(username,password)

values

('fei'

,'123456'

);

如不建立觸發器則存在如下問題:

問題:不支援下列插入方式

insert

into userinfo (username, password)

select k1, k2 from anothertable;

oracle中設定自增主鍵

新建序列 create sequence name increment by x x為增長間隔 start with x x為初始值 maxvalue x x為最大值 nomaxvalue 不設定最大值 minvalue x x為最小值 nominvalue 不設定最小值 cycle 迴圈使用,到達...

設定Oracle主鍵自增

oracle沒有設定主鍵auto increment的功能,需要自己編寫序列和觸發器實現主鍵自動遞增。示例 建立表menu create table menu menuid number 10 not null primary key,name varchar2 40 not null,id par...

oracle設定主鍵自增

oracle中沒有自增字段,可通過序列 觸發器間接實現,cmd中sqlplus登入,直接執行即可。一般要經過一下幾步 1建立資料表 code create table test increase userid number 10 primary key,主鍵,自動增加 username varcha...