久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle實現主鍵字段自增的方式有哪些

162次閱讀
沒有評論

共計 2171 個字符,預計需要花費 6 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 Oracle 實現主鍵字段自增的方式有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Oracle 實現主鍵自增有 4 種方式:

Identity Columns 新特性自增(Oracle 版本 12c)

創建自增序列,創建表時,給主鍵字段默認使用自增序列

創建自增序列,使用觸發器使主鍵自增

創建自增序列,插入語句(insert)時,使用自增序列代替值

數據庫表名稱為:userinfo(不能使用 user,user 為 Oracle 關鍵字)

方式一:Identity Columns 新特性自增

該種方式要求 Oracle 版本 12c

在自增字段后使用以下 2 種語句的 1 種:

generated by default as IDENTITY

generated always as identity

建表語句:

CREATE TABLE userinfo (id number(11) generated by default as IDENTITY,-- 使用自增功能
 name varchar2(20) ,
  age number(3)
)

  測試:

INSERT INTO USERINFO (name,age) VALUES(張三 ,18)

結果:

該種方式很簡單,底層原理其實和下面 3 種方式相似,只是 Oracle 幫我們省去了多余的操作。

以下是剩余的 3 種方式,都用共同的特點(先創建自增序列): 

準備工作:

必須先創建自增序列:

-- 設置自增序列,名稱為 seq_userinfo,名字任意命名
create sequence seq_userinfo
 increment by 1 -- 每次 +1 
 start with 1 -- 從 1 開始
 nomaxvalue -- 不限最大值
 nominvalue -- 不限最小值
 cache 20; -- 設置取值緩存數為 20

sequence 各個參數詳解,可以參考這邊文章:

Oracle 中 sequence(序列)詳解

方式二:創建自增序列,創建表時,給主鍵字段默認使用自增序列

建表語句,設置自增字段默認使用自增序列(推薦該方式):

-- 創建 userinfo 表
CREATE TABLE userinfo ( id number(11) DEFAULT seq_userinfo.nextval, -- seq_userinfo 為自增序列名稱
 name varchar2(20) ,
 age number(3)
);

測試:我使用的是 DBeaver 軟件:

如圖:

  注意:新增了一條數據,點擊保存,該軟件并不會立刻自動顯示生成的 ID,我們需要關閉當前頁簽,再打開就可以看到自增的 ID 了

如下:

方式三:創建自增序列,使用觸發器使主鍵自增

建表語句:

-- 創建 userinfo 表
CREATE TABLE userinfo ( id number(11) not null,
 name varchar2(20) ,
 age number(3)
);

創建觸發器(只需要注意注釋的位置):

-- 創建觸發器,名稱為 deptinfo_TRIGGER,名字任意命名
create or replace trigger userinfo_TRIGGER
before insert on userinfo -- userinfo 為表名稱
for each row
begin
select seq_userinfo.nextval into :new.id from dual; --1、seq_userinfo 為自增序列名稱  2、這里的 id 是你需要自增的序列
end userinfo_TRIGGER; -- userinfo_TRIGGER 為觸發器名稱 

測試:跟方式 1 測試一樣,會存在不顯示 ID 問題:

如圖:

重新打開頁簽:

如下:

方式四:創建自增序列,插入語句(insert)時,使用自增序列代替值

建表語句:

-- 創建 userinfo 表
CREATE TABLE userinfo ( id number(11) not null,
 name varchar2(20) ,
 age number(3)
);

在插入語句中,自增的字段(ID),使用自增序列去代替

如下:

INSERT INTO userinfo(id,name,age) VALUES(seq_userinfo.nextval, 睡竹 ,18);

注意:方式三與 MySQL、微軟的 SQL server 的自增方式是一樣的!

運行結果:

總結:

對后臺系統開發來說:

方式 1 和方式 2 最方便

方式 3 還需要新加一個觸發器,不推薦

方式 4 類似于方式 2,但是對 Java 程序而言,mybatis 的 xml 需要顯式的指定觸發器,不夠友好

附上刪除觸發器和自增序列的語句:

-- 刪除自增序列, seq_userinfo 為自增序列的名稱
drop sequence seq_userinfo
-- 刪除觸發器,userinfo_TRIGGER 為觸發器名稱
drop trigger userinfo_TRIGGER

以上就是“Oracle 實現主鍵字段自增的方式有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計2171字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阳东县| 靖安县| 莫力| 台北市| SHOW| 北辰区| 彰武县| 镇宁| 聂拉木县| 福贡县| 高州市| 文水县| 若羌县| 宜州市| 右玉县| 南澳县| 孙吴县| 盐池县| 依兰县| 泸西县| 浙江省| 盐津县| 天镇县| 大同市| 开化县| 桓台县| 舞阳县| 贵定县| 伊吾县| 紫阳县| 仲巴县| 辽宁省| 南部县| 马山县| 常德市| 青岛市| 泰和县| 临城县| 宁陕县| 周宁县| 四平市|