簡單三步輕鬆實現ORACLE欄位自增_oracle

來源:互聯網
上載者:User
第一步:建立一個表。
複製代碼 代碼如下:

create table Test_Table
(
ID number(11) primary key,
Name varchar(50) not null,
Value1 varchar(50) not null
)

第二步:建立一個自增序列以此提供調用函數。
複製代碼 代碼如下:

create sequence AutoID
start with 1 //根據需要自己可修改該數值
increment by 1 //步長值
minvalue 1
nomaxvalue

其實到此步驟,已經可以實現欄位自增了。新增記錄時看如下代碼:
複製代碼 代碼如下:

Insert into Test_Table(ID,Name,Value1)values(AutoID.nextval,'xiyang','blog')

第三步:我們通過建立一個觸發器,使調用的方式更加簡單。
複製代碼 代碼如下:

create trigger AutoID_Trigger

before insert on Test_Table for each row
begin
select AutoID.nextval into :new.ID from dual;
end AutoID_Trigger;

該觸發器在資料庫註冊了表格的偵聽,即當指定表Test_Table插入記錄之前,我們調用一個序列方法的nextval獲得新值,插入自增欄位。
在觸發器中,我們調用了系統虛擬表dual,該表作為系統資料表的一部分,它內部只儲存一條記錄,我們可以通過該表擷取與系統相關的一些資訊或者進行一些簡單的邏輯操作。
在該觸發器中,我們使用了dual的一個經典用法,即擷取定義序列的nextval方法。
通過上面三個步驟,我們就實現了一個表的欄位自增,做插入操作時執行以下代碼即可:
Insert into Test_Table(Name,Value1) values('xiyang','blog')
通過在資料庫中查詢結果集,會發現ID列是自增的。
值得一提的是,在資料庫操作中,觸發器的使用耗費系統資源相對較大。如果對於表容量相對較小的表格我們可以忽略觸發器帶來的效能影響。考慮到大表操作的效能問題,
我們儘可能的減少觸發器的使用。對於如上操作,我們完全可以拋棄觸發器的使用,直接手動調用序列函數即可,這樣可能在程式維護上稍微帶來一些不便。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.