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