成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

今天小編給大家分享一下Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對垃圾桶等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

Oracle實(shí)現(xiàn)主鍵自增有4種方式:

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

  • 創(chuàng)建自增序列,創(chuàng)建表時(shí),給主鍵字段默認(rèn)使用自增序列

  • 創(chuàng)建自增序列,使用觸發(fā)器使主鍵自增

  • 創(chuàng)建自增序列,插入語句(insert)時(shí),使用自增序列代替值

數(shù)據(jù)庫表名稱為:userinfo(不能使用user,user為Oracle關(guān)鍵字)

方式一: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)

結(jié)果:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

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

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

準(zhǔn)備工作:

必須先創(chuàng)建自增序列:

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

sequence各個(gè)參數(shù)詳解,可以參考這邊文章:

Oracle中sequence(序列)詳解

方式二:創(chuàng)建自增序列,創(chuàng)建表時(shí),給主鍵字段默認(rèn)使用自增序列

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

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

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

如圖:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

 注意:新增了一條數(shù)據(jù),點(diǎn)擊保存,該軟件并不會(huì)立刻自動(dòng)顯示生成的ID,我們需要關(guān)閉當(dāng)前頁簽,再打開就可以看到自增的ID

如下:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

方式三:創(chuàng)建自增序列,使用觸發(fā)器使主鍵自增

建表語句:

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

創(chuàng)建觸發(fā)器(只需要注意注釋的位置):

--創(chuàng)建觸發(fā)器,名稱為"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"為觸發(fā)器名稱

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

如圖:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

重新打開頁簽:

如下:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

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

建表語句:

--創(chuàng)建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的自增方式是一樣的!

運(yùn)行結(jié)果:

Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些

總結(jié):

對后臺系統(tǒng)開發(fā)來說:

方式1和方式2最方便

方式3還需要新加一個(gè)觸發(fā)器,不推薦

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

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

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

以上就是“Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:Oracle實(shí)現(xiàn)主鍵字段自增的方式有哪些
文章位置:http://jinyejixie.com/article8/posjop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、小程序開發(fā)網(wǎng)頁設(shè)計(jì)公司、面包屑導(dǎo)航、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
墨玉县| 娱乐| 儋州市| 明光市| 广灵县| 永定县| 南郑县| 盘锦市| 南川市| 新建县| 汾阳市| 西和县| 乐至县| 舞阳县| 车险| 甘泉县| 成都市| 罗山县| 铜陵市| 达日县| 冷水江市| 沭阳县| 台南县| 仪征市| 师宗县| 张家川| 福清市| 汉源县| 阿图什市| 安远县| 临澧县| 西宁市| 手游| 大安市| 昌邑市| 缙云县| 仙桃市| 汝州市| 宜昌市| 溧水县| 上饶县|