91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2023-03-13 14:03:32 來源:億速云 閱讀:404 作者:iii 欄目:數據庫

今天小編給大家分享一下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)

結果:

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

該種方式很簡單,底層原理其實和下面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軟件:

如圖:

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

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

如下:

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

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

建表語句:

--創建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問題:

如圖:

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

重新打開頁簽:

如下:

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

方式四:創建自增序列,插入語句(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的自增方式是一樣的!

運行結果:

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

總結:

對后臺系統開發來說:

方式1和方式2最方便

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

循化| 东至县| 苍南县| 米泉市| 东兴市| 增城市| 岳普湖县| 利津县| 太仆寺旗| 钟祥市| 板桥市| 平武县| 砀山县| 柞水县| 阿克苏市| 盘锦市| 逊克县| 蚌埠市| 遂溪县| 枝江市| 桑植县| 黄浦区| 平定县| 建阳市| 冀州市| 陕西省| 新宁县| 富阳市| 九龙城区| 临桂县| 扎兰屯市| 新营市| 沅陵县| 子洲县| 平湖市| 贵州省| 奉贤区| 扶沟县| 靖西县| 玛沁县| 克拉玛依市|