在學習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位,不進占空間並且建索引的話效能會比...