1:業務表
create table a_test_trigger
(id varchar2(255 char) not null,
sn varchar2(255 char)
)2:儲存當前序列號的表:
create table sequence_generator
(key varchar2(20) not null,
current_seq number(20)
)3:建立觸發器
create or replace trigger test_sn_generator
before insert on learn.a_test_trigger
for each row
declare
sn_no varchar2(1000);
begin
select current_seq||'aaaaa' into :new.sn from sequence_generator for update;
update sequence_generator set current_seq = current_seq +1 where key = '51080201ia';
end;
4:這樣當業務表中插入資料
insert into a_test_trigger(id, sn) values(1, 'a');
時根據sequence_generator表生成序列號
5:注意在查詢sequence_generator 時使用了 悲觀鎖
6:這樣就可以根據一定的業務規則生成序列號了。
因為觸發器與當前session在同乙個事務中,所以與其他的session隔離了。
Oracle 序列 觸發器的使用
oracle 序列 create sequence emp sequence 序列名 increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 制定存入快取 也就是記憶體 序列值的個數 備...
Orcale序列 觸發器
序列 重點 i.語法 create sequence序列名 引數 ii.詳解 用來生成一列自動增長的值。create sequence seq class minvalue 值 最小值 maxvalue 值 最大值 start with 起始值 increment by 值 遞增數 cache 快取...
Oracle 序列,觸發器
序列是什麼 序列就是按照一定的規則,不斷增長 不斷減少 的乙個數字 用於我們資料庫表裡 作為資料的乙個唯一標識。序列的語法 建立序列 create sequence seq objid 建立乙個名稱為seq objid 的序列 increment by 1 每次增長1 1,2,3,4,5,6,7,s...