今天用oracle client建表時用到序列和觸發器,記錄一下它們的用法:主要是通過建立序列和觸發器實現表的主鍵自增。
首先建立序列,序列的語法格式為:
create sequence name
[increment by n]
[start with n]
;increment by 用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表序列的值是按照此步長遞減的。
start with 定義序列的初始值(即產生的第乙個值),預設為1。
maxvalue 定義序列生成器能產生的最大值。選項nomaxvalue是預設選項,代表沒有最大值定義,這時對於遞增序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。
minvalue定義序列生成器能產生的最小值。選項nomaxvalue是預設選項,代表沒有最小值定義,這時對於遞減序列,系統能夠產生的最小值是?10的26次方;對於遞增序列,最小值是1。
cycle和nocycle 表示當序列生成器的值達到限制值後是否迴圈。cycle代表迴圈,nocycle代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。
cache(緩衝)定義存放序列的記憶體塊的大小,預設為20。nocache表示不對序列進行記憶體緩衝。對序列進行記憶體緩衝,可以改善序列的效能。
刪除序列的語法是drop sequence name;
假設有表a,其主鍵為id,首先建立遞增序列seq_a:
create sequence seq_a
increment by 1
start with 1
minvalue 1 nomaxvalue
nocylce
然後建立觸發器,當有資料插入表a 時,使用序列為其去的遞增的主鍵值
create trigger trg_a before insert on a
for each row
begin
select seq_a.nextval into :new.id from dual;
end;
至此,建立完成!
Oracle 序列 觸發器的使用
oracle 序列 create sequence emp sequence 序列名 increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 制定存入快取 也就是記憶體 序列值的個數 備...
Oracle 序列,觸發器
序列是什麼 序列就是按照一定的規則,不斷增長 不斷減少 的乙個數字 用於我們資料庫表裡 作為資料的乙個唯一標識。序列的語法 建立序列 create sequence seq objid 建立乙個名稱為seq objid 的序列 increment by 1 每次增長1 1,2,3,4,5,6,7,s...
oracle 建序列,觸發器
oracle是全球最大的關聯式資料庫,她的使用有很多技巧,常用的建立表空間,建立序列,建立觸發器等嗾使是初學者需要掌握的內容。首先登陸資料庫 啟動命令列 cmdsqlplus 以管理員 sys 登陸資料庫 sqlplus sys password as sysdba 建立臨時表空間 create t...