序列和觸發(fā)器實現(xiàn)主鍵自增長

前提:要在Oracle中完成主鍵自動增長的功能,只能依靠序列完成,所有的自動增長操作,需要用戶手工完成處理。

序列是一個獨立的主體,可以應(yīng)用到表格的某個字段中(數(shù)字字段)。

1、創(chuàng)建序列的語法

CREATE SEQUENCE sequence_name ? ? ? ? ??

[INCREMENT BY n][STARTWITH n] ? ? ? ? ? ? ?

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE n|NOCACHE}] ;

2、序列字段含義

CREATE SEQUENCE sequence_name? ? ? ? ? 序列名

[INCREMENT BY n][STARTWITH n] ?

startwith 是確定序列從 n 開始增長, increment by 是每次增長 n。

[{MAXVALUE n | NOMAXVALUE}] ? ? 序列最大值

[{MINVALUE n | NOMINVALUE}] ? ? 最小值

[{CYCLE|NOCYCLE}] ? ? ? ? ? 循環(huán)

[{CACHE n|NOCACHE}] ; ? ? 緩存

3、實例

create sequence squency_overdue_role

increment by 1

start with 10050

nomaxvalue;

4、序列用法

? 刪除序列

drop sequence squency_overdue_role;

序列常用字段:

nextVal ? ? 獲取序列下個值

currVal ? ?獲取當(dāng)前序列值


1、創(chuàng)建觸發(fā)器語法

CREATE[OR REPLACE]TRIGGERtrigger_name

{BEFORE|AFTER?}

{INSERT|DELETE|UPDATE[OF?column?[,?column?…]]}

[OR?{INSERT?|?DELETE?|?UPDATE?[OF?column?[,?column?…]]}...]

ON[schema.]table_name|[schema.]view_name

[REFERENCING?{OLD?[AS]old|NEW[AS]new|PARENTasparent}]

[FOR?EACH?ROW?]

[WHEN?condition]

PL/SQL_BLOCK|CALL?procedure_name;

2、觸發(fā)器實例

(把序列應(yīng)用到表 hcs_ca_aging_lines 中,當(dāng)每次向表 hcs_ca_aging_lines 中插入數(shù)據(jù)時,序列自動增長。插入語句無需寫應(yīng)用序列的字段,即 AGING_LINE_ID 字段)?

create or replace trigger tri_aging_lines

before insert on hcs_ca_aging_lines

for each row

begin

select sequence_aging_lines.nextval into :new.AGING_LINE_ID from dual;

end;

3、刪除觸發(fā)器

drop trigger tri_overdue_rule;


向表中插入數(shù)據(jù):

insert into hcs_ca_aging_lines

(AGING_HEADER_ID,LINE_NUMBER,STAGE_NAME,AGING_FROM,AGING_TO)

values

('10209','3','1-30','1','30');

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容