Oracle 實現自增列

2021-06-18 19:48:13 字數 1524 閱讀 6755

sql server中實現自增列只需要將字段定義為identity(1,1),而在oracle中自增列需要使用乙個序列(sequence)和觸發器來實現。

1. 建立sequence,首先需要有create sequence或者create any sequence許可權

1

create sequence s_id increment by 1 start with 1 maxvalue 999999999;

建立乙個序列從1開始自增,最大值到999999999。

或者不設定最大值:

1

2

3

4

5

6

create sequence s_id nomaxvalue nocycle

--increment by 1 

-- 每次加幾個

--start with 1 

-- 從1開始計數

--nomaxvalue 

-- 不設定最大值

--nocycle 

-- 一直累加,不迴圈

--cache 10; 

-- 快取序列個數,有助於提高效率,但可能造成跳號

2. 建立表的before insert觸發器,使用該sequence

1

2

3

4

5

create or replace trigger trg_tb_user

before insert on "tb_user" for each row

begin

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

end;

或者不使用觸發器,在insert語句中直接使用s_id.nextval獲取下乙個自增值,如:

create table tb_user(

id number(11) not null,

username varchar2(20) not null,

password varchar2(20) not null,

constraint pk_id primary key(id)

)storage (initial 100k next 100k pctincrease 0);

insert into tb_user(id,username,password) values (s_id.nextval,'user','pwd');

Oracle中實現自增列

oracle中新增自增列 觸犯器和序列實現 create orreplace trigger 觸發器名 before insert on his mz sfmx foreach row declare last sequence number last insertid number begin i...

oracle自增列的問題

建立表 create table test id number primary key,name varchar2 not null 建立序列 create sequence test seq start with 1 increment by 1 建立觸發器 create or replace t...

oracle 自增列建立方法

oracle沒有oracle自增字段這樣的功能,但是通過觸發器 trigger 和序列 sequence 可以實現。先建乙個測試表了 create table userlogin id number 6 not null,name varchar2 30 not null primary key t...