Oracle資料庫主鍵自增

2021-10-05 09:20:29 字數 2795 閱讀 5925

在學習mysql時,我們很容易通過auto_increment就能實現主鍵自增的功能,但是在oracle資料庫中,是沒有這個關鍵字的,所以也不能通過這樣來實現主鍵自增。下面我就為大家介紹兩種實現主鍵自增的方法。

兩種方法的基礎都有乙個概念就是序列(sequence)的概念,一種是利用序列和顯式呼叫的方式去實現主鍵自增,另一種是通過序列和觸發器(trigger)來實現主鍵自增。

/1.利用序列主鍵自增/

第一步、建立表

–建立表,主鍵為id

create table yff (

id int primary key ,

name varchar2(10)

);

–建立表的格式

create table 表名(

欄位名 字段型別(可以加一些約束,例如主鍵約束),

欄位名 字段型別

第二步、建立序列

–建立序列

create sequence seq_yff

start with 1

increment by 1;

–建立序列的格式

create sequence 序列名稱

start with 開始數字

increment by 增長數字

minvalue 最小值

maxvalue 最大值

cycle 是否迴圈(cycle為迴圈,nocycle為不迴圈)

nocache 不使用快取

關於序列的其他重要操作

–查詢序列(利用nextval查詢序列下一次的值)

select seq_yff.nextval from dual;
–查詢序列的格式

select 序列名.nextval from dual
(dual為偽表,當我們不需要從具體的表來取得表中資料,而是單純地

得到一些我們想得到的資訊,就可以使用偽表)

注意:這裡第一次執行這條查詢語句得到結果為1,再執行得到2,第一種實現主鍵自增的方法就是使用序列名.nextval使得值一直增加的

--刪除序列()

drop sequence seq_yff;

注意:序列和表不是連線在一起的,當序列建立之後,用在這個表之後,我將該錶刪除,但是序列的值還是停留在之前的值上,所以需要注意這個問題

第三步、利用序列+顯式化呼叫 進行自增

1.  insert into yff values (seq_yff.nextval,'張三');

2. insert into yff values (seq_yff.nextval,'張三');

–2利用序列+觸發器呼叫 進行主鍵自增

此處已經表和序列都用第一種方法中使用過的

第一步、在表和序列建立好之後,建立觸發器
–建立觸發器

create or replace trigger tri_yff_insert

before insert on yff

referencing old as old new as new

for each row

begin

select seq_yff.nextval

into :new.id

from dual;

end tri_yff_insert;

–建立觸發器格式

create [or replace] tigger 觸發器名

觸發時間 觸發事件

on 表名

[for each row]
begin

pl/sql語句
end

–解釋上面的觸發器語句

create or replace trigger tri_yff_insert    建立觸發器並命名

before insert on yff 觸發時間為向表yff中插入時

referencing old as old new as new

for each row 對錶的每一行觸發一次,否則只對整表執行一次

begin

select seq_yff.nextval

into :new.id

from dual;

end tri_yff_insert;

其他對觸發器的操作

–查詢表中觸發器

select * from all_triggers where table_name='yff'

--刪除觸發器

drop trigger tri_yff_insert;

第二步、插入資料

insert into yff (id,name) values(100,『李四』);

insert into yff (name) values(『李四』);

–不管給不給主鍵賦值,這裡觸發器都會使得主鍵值為序列的值

oracle資料庫中讓主鍵自增

由於oracle設定主鍵是不會自動增加的,所以必須用 序列 來完成主鍵的遞增 1建立資料表 create table test increase userid number 10 primary key,建立主鍵 username varchar2 20 2建立自動增長序列 create seque...

oracle資料庫主鍵自增並且返回主鍵值

一 建立序列 1.1 直接在plsql中設定 1.2 命令建立 create sequence seq users 建立序列seq users increment by 1 步長,每次加1 start with 1 從1開始 minvalue 1 最小值 maxvalue 9999999 最大值 c...

資料庫主鍵自增策略

資料庫主鍵自增策略 1.自增長主鍵策略 優點 簡單,不需要程式做特別處理 缺點 這種方法對以後如果專案移植到其他資料庫改動會比較大,而且如果多表合併,就會出現重複的主鍵 2.使用時間戳 隨機數 優點 時間簡單,與資料庫無關,移植性較好 缺點 長度太長,最少也得20位,不進占空間並且建索引的話效能會比...