第一步:創(chuàng)建一個(gè)表。
復(fù)制代碼 代碼如下:
create table Test_Table
(
ID number(11) primary key,
Name varchar(50) not null,
Value1 varchar(50) not null
)
第二步:創(chuàng)建一個(gè)自增序列以此提供調(diào)用函數(shù)。
復(fù)制代碼 代碼如下:
create sequence AutoID
start with 1 //根據(jù)需要自己可修改該數(shù)值
increment by 1 //步長(zhǎng)值
minvalue 1
nomaxvalue
其實(shí)到此步驟,已經(jīng)可以實(shí)現(xiàn)字段自增了。新增記錄時(shí)看如下代碼:
復(fù)制代碼 代碼如下:
Insert into Test_Table(ID,Name,Value1)values(AutoID.nextval,'xiyang','blog')
第三步:我們通過創(chuàng)建一個(gè)觸發(fā)器,使調(diào)用的方式更加簡(jiǎn)單。
復(fù)制代碼 代碼如下:
create trigger AutoID_Trigger
before insert on Test_Table for each row
begin
select AutoID.nextval into :new.ID from dual;
end AutoID_Trigger;
該觸發(fā)器在數(shù)據(jù)庫注冊(cè)了表格的偵聽,即當(dāng)指定表Test_Table插入記錄之前,我們調(diào)用一個(gè)序列方法的nextval獲得新值,插入自增字段。
在觸發(fā)器中,我們調(diào)用了系統(tǒng)虛擬表dual,該表作為系統(tǒng)表的一部分,它內(nèi)部只存儲(chǔ)一條記錄,我們可以通過該表獲取與系統(tǒng)相關(guān)的一些信息或者進(jìn)行一些簡(jiǎn)單的邏輯操作。
在該觸發(fā)器中,我們使用了dual的一個(gè)經(jīng)典用法,即獲取定義序列的nextval方法。
通過上面三個(gè)步驟,我們就實(shí)現(xiàn)了一個(gè)表的字段自增,做插入操作時(shí)執(zhí)行以下代碼即可:
Insert into Test_Table(Name,Value1) values('xiyang','blog')
通過在數(shù)據(jù)庫中查詢結(jié)果集,會(huì)發(fā)現(xiàn)ID列是自增的。
值得一提的是,在數(shù)據(jù)庫操作中,觸發(fā)器的使用耗費(fèi)系統(tǒng)資源相對(duì)較大。如果對(duì)于表容量相對(duì)較小的表格我們可以忽略觸發(fā)器帶來的性能影響。考慮到大表操作的性能問題,
我們盡可能的減少觸發(fā)器的使用。對(duì)于如上操作,我們完全可以拋棄觸發(fā)器的使用,直接手動(dòng)調(diào)用序列函數(shù)即可,這樣可能在程序維護(hù)上稍微帶來一些不便。
您可能感興趣的文章:- oracle刪除表字段和oracle表增加字段
- oracle使用sql語句增加字段示例(sql刪除字段語句)
- Oracle 插入超4000字節(jié)的CLOB字段的處理方法
- oracle關(guān)鍵字作為字段名使用方法
- 深入淺析mybatis oracle BLOB類型字段保存與讀取
- Oracle中判斷字段是否為數(shù)字
- oracle數(shù)據(jù)庫中如何處理clob字段方法介紹
- Oracle 查詢表信息獲取表字段及字段注釋
- java讀寫oracle的blob字段示例
- ORACLE中段的HEADER_BLOCK示例詳析