通過序列和觸發器實現Oracle主鍵自增長

2021-08-09 17:27:15 字數 1177 閱讀 7406

create

table increase_test

( id number

notnull

primary

key,

name varchar2(10),

age number

)

首先要給需要自增的表建乙個專屬的序列,畢竟大家都用乙個序列豈不是要亂掉。

create sequence seq_increase

increment by

1start

with

1;

其中,seq_increase是序列的名稱,只要讓自己能記住是哪個表的就可以了。下面的值是序列的屬性,其中increment by 1是每次加1,當然每次加幾都可以。start with 1是從1開始,當然從幾開始都行。

也可以設定其他的屬性,如:

自增需要通過觸發器來實現,就是說在插入的時候將序列的下乙個值插入主鍵。

create

orreplace

trigger tg_increase

before

insert

on increase_test

foreach

rowwhen (new.id is

null)

begin

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

end;

其中tg_increase是觸發器的名字,new.id的id是increase_test表的主鍵欄位名id。可以看出這個觸發器的大概意思是,在對increase_test表進行插入操作之前,檢視插入的資料。如果插入的資料id這個欄位為空,則用seq_increase序列的下乙個值填入id這個字段。

我們也可以檢視當前使用者建立的序列,以及刪除序列。

-- 檢視序列

select sequence_owner,sequence_name from dba_sequences where sequence_owner = '當前使用者'

-- 刪除序列

drop sequence seq_increase

oracle序列總結

oracle觸發器用法例項詳解

觸發器和序列

create sequence person sequence increment by 1 每次加幾個 start with 36 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 nocache 不建緩衝區建立乙個序列。create or replace tri...

oracle通過序列和觸發器實現自增主鍵

建立表 create table user tr id int primary key,name varchar2 10 gender varchar2 2 phone number 11 address varchar 20 建立表的序列 create sequence seq user star...

Oracle通過觸發器和序列的方式實現自增

觸發器格式 create or replace trigger 觸發器名字 before insert on 資料表名字 for each row declare nextid number begin if new.自增的列名 is null or new.自增的列名 0 then select ...