假設我們有乙個address表,希望實現位址編號address_id的自增
1.通過pl/sql建立序列:
首先,新建sequences物件
選擇序列所有者,並填寫序列的起始值、名稱和增量等資訊,並應用
可以檢視其sql建立語句
序列建立完成後,可以通過系統表dual查詢-- create sequence
create
sequence seq_address_id
minvalue
10001
maxvalue
999999999999999999999999999
start
with
10001
incrementby1
cache
20;
注:oracle剛建立完序列後用currval查詢不了當前值的,得先用nextval查詢過後才能進行currval的查詢--查詢序列當前值
select seq_address_id.currval
from dual;
--查詢序列下一值
select seq_address_id.nextval
from dual;
到此,已經可以實現address表中位址編號欄位address_id的自增,通過插入時呼叫序列的nextval即可
insert
into address(address_id,address_name) values(seq_address_id.nextval,'第八大街');
為了使序列的呼叫方式更加方便,我們接下來要建立乙個觸發器。
2.通過pl/sql建立觸發器
首先,新建trigger物件
填寫觸發器名稱,以及下列要素並確定
觸發時間(fires):before、after、instead of
事件(event):insert、update、delete
表或檢視(table or view):選擇需要建立觸發器的表
確定後,會開啟觸發器程式編輯視窗,我們需要在紅框處編寫觸發器要執行的sql語句
這裡就是為address表的address_id欄位插入自增序列:
select seq_address_id.nextval into :new.address_id from dual;
該觸發器在資料庫註冊了表的偵聽,即當指定表address插入記錄之前,我們呼叫序列的nextval獲得新值,插入需要自增的字段。
至此,我們就完成了address表的address_id欄位自增,執行插入sql時,該字段會自動增長
insert
into address(address_name) values('第八大街');
需要注意的是,在資料庫操作中,觸發器的使用對系統資源耗費相對較大。對於容量相對較小的表我們可以忽略觸發器帶來的效能影響。考慮到大表操作的效能問題, 我們盡可能的減少觸發器的使用,改為直接手動呼叫序列函式即可。
假設我們有乙個address表,希望實現位址編號address_id的自增
觸發器和序列
create sequence person sequence increment by 1 每次加幾個 start with 36 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 nocache 不建緩衝區建立乙個序列。create or replace tri...
PLSQL 除錯觸發器
在plsql裡是可以除錯觸發器的,相信有一部分人可能不清楚這個。以前我一直使用sql server,哈哈,養成了乙個根深蒂固的觀念,以為oracle裡觸發器也是不能除錯的,其實sqlserver裡面也是可以除錯的 寫這個的時候特意 在網上查詢了下資料 好了,為了形象說明,下面列舉個例子,如下圖所示,...
建立表序列的觸發器
建立表序列的觸發器 作用 直接往表中貼資料時讓序列的字段自動生成 檢視方法 一般為 1 觸發器使用者名稱.表名 trg,view就能夠看到相應的觸發器的 2 通過view對應的表看到最後的trigger段可以看到enable的trigger 實現 create or replace trigger ...