簡單三步輕松實現(xiàn)ORACLE字段自增
更新時間:2013年11月18日 17:41:52 作者:
第一步:創(chuàng)建一個表、第二步:創(chuàng)建一個自增序列以此提供調(diào)用函數(shù)、第三步:我們通過創(chuàng)建一個觸發(fā)器,使調(diào)用的方式更加簡單
第一步:創(chuàng)建一個表。
create table Test_Table
(
ID number(11) primary key,
Name varchar(50) not null,
Value1 varchar(50) not null
)
第二步:創(chuàng)建一個自增序列以此提供調(diào)用函數(shù)。
create sequence AutoID
start with 1 //根據(jù)需要自己可修改該數(shù)值
increment by 1 //步長值
minvalue 1
nomaxvalue
其實到此步驟,已經(jīng)可以實現(xiàn)字段自增了。新增記錄時看如下代碼:
Insert into Test_Table(ID,Name,Value1)values(AutoID.nextval,'xiyang','blog')
第三步:我們通過創(chuàng)建一個觸發(fā)器,使調(diào)用的方式更加簡單。
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ù)庫注冊了表格的偵聽,即當(dāng)指定表Test_Table插入記錄之前,我們調(diào)用一個序列方法的nextval獲得新值,插入自增字段。
在觸發(fā)器中,我們調(diào)用了系統(tǒng)虛擬表dual,該表作為系統(tǒng)表的一部分,它內(nèi)部只存儲一條記錄,我們可以通過該表獲取與系統(tǒng)相關(guān)的一些信息或者進行一些簡單的邏輯操作。
在該觸發(fā)器中,我們使用了dual的一個經(jīng)典用法,即獲取定義序列的nextval方法。
通過上面三個步驟,我們就實現(xiàn)了一個表的字段自增,做插入操作時執(zhí)行以下代碼即可:
Insert into Test_Table(Name,Value1) values('xiyang','blog')
通過在數(shù)據(jù)庫中查詢結(jié)果集,會發(fā)現(xiàn)ID列是自增的。
值得一提的是,在數(shù)據(jù)庫操作中,觸發(fā)器的使用耗費系統(tǒng)資源相對較大。如果對于表容量相對較小的表格我們可以忽略觸發(fā)器帶來的性能影響。考慮到大表操作的性能問題,
我們盡可能的減少觸發(fā)器的使用。對于如上操作,我們完全可以拋棄觸發(fā)器的使用,直接手動調(diào)用序列函數(shù)即可,這樣可能在程序維護上稍微帶來一些不便。
復(fù)制代碼 代碼如下:
create table Test_Table
(
ID number(11) primary key,
Name varchar(50) not null,
Value1 varchar(50) not null
)
第二步:創(chuàng)建一個自增序列以此提供調(diào)用函數(shù)。
復(fù)制代碼 代碼如下:
create sequence AutoID
start with 1 //根據(jù)需要自己可修改該數(shù)值
increment by 1 //步長值
minvalue 1
nomaxvalue
其實到此步驟,已經(jīng)可以實現(xiàn)字段自增了。新增記錄時看如下代碼:
復(fù)制代碼 代碼如下:
Insert into Test_Table(ID,Name,Value1)values(AutoID.nextval,'xiyang','blog')
第三步:我們通過創(chuàng)建一個觸發(fā)器,使調(diào)用的方式更加簡單。
復(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ù)庫注冊了表格的偵聽,即當(dāng)指定表Test_Table插入記錄之前,我們調(diào)用一個序列方法的nextval獲得新值,插入自增字段。
在觸發(fā)器中,我們調(diào)用了系統(tǒng)虛擬表dual,該表作為系統(tǒng)表的一部分,它內(nèi)部只存儲一條記錄,我們可以通過該表獲取與系統(tǒng)相關(guān)的一些信息或者進行一些簡單的邏輯操作。
在該觸發(fā)器中,我們使用了dual的一個經(jīng)典用法,即獲取定義序列的nextval方法。
通過上面三個步驟,我們就實現(xiàn)了一個表的字段自增,做插入操作時執(zhí)行以下代碼即可:
Insert into Test_Table(Name,Value1) values('xiyang','blog')
通過在數(shù)據(jù)庫中查詢結(jié)果集,會發(fā)現(xiàn)ID列是自增的。
值得一提的是,在數(shù)據(jù)庫操作中,觸發(fā)器的使用耗費系統(tǒng)資源相對較大。如果對于表容量相對較小的表格我們可以忽略觸發(fā)器帶來的性能影響。考慮到大表操作的性能問題,
我們盡可能的減少觸發(fā)器的使用。對于如上操作,我們完全可以拋棄觸發(fā)器的使用,直接手動調(diào)用序列函數(shù)即可,這樣可能在程序維護上稍微帶來一些不便。
相關(guān)文章
Oracle模糊查詢的幾種方法匯總【最后一種最優(yōu)】
這篇文章主要介紹了Oracle模糊查詢的幾種方法匯總,針對每種方法小編給大家做了解析說明,在這推薦第三種,需要的朋友可以參考下2023-07-07Oracle 高速批量數(shù)據(jù)加載工具sql*loader使用說明
SQL*Loader(SQLLDR)是Oracle的高速批量數(shù)據(jù)加載工具,這是一個非常有用的工具,可用于多種平面文件格式向Oralce數(shù)據(jù)庫中加載數(shù)據(jù)2012-12-12Mybatis出現(xiàn)ORA-00911: invalid character的解決辦法
今天在項目中,使用Mybatis對oracle數(shù)據(jù)庫進行操作的時候,報出ORA-00911: invalid character的錯誤,檢查了一下SQL,發(fā)現(xiàn)都書寫正確啊,復(fù)制到plsql上執(zhí)行也都沒問題,這什么原因呢,下面通過本文給大家解答下2016-12-12Oracle 11g安裝錯誤提示未找到wfmlrsvcapp.ear的解決方法
這篇文章主要為大家詳細介紹了Oracle 11g安裝錯誤提示未找到wfmlrsvcapp.ear的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04Oracle帶輸入輸出參數(shù)存儲過程(包括sql分頁功能)
這篇文章主要介紹了Oracle帶輸入輸出參數(shù)存儲過程(包括sql分頁功能)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10AWR 深入分析( Automatic Workload Repository )
本篇文章,小編為大家介紹一下關(guān)于AWR 深入分析( Automatic Workload Repository )有需要的朋友可以參考一下2013-04-04Oracle 閃回 找回數(shù)據(jù)的實現(xiàn)方法
閃回技術(shù)是Oracle強大數(shù)據(jù)庫備份恢復(fù)機制的一部分,在數(shù)據(jù)庫發(fā)生邏輯錯誤的時候,閃回技術(shù)能提供快速且最小損失的恢復(fù)。這篇文章主要介紹了Oracle 閃回 找回數(shù)據(jù)的實現(xiàn)方法,需要的朋友可以參考下2018-09-09