柚子快報激活碼778899分享:Oracle數(shù)據(jù)表ID自增操作
柚子快報激活碼778899分享:Oracle數(shù)據(jù)表ID自增操作
一、Oracle ID自增長功能介紹
?????? Oracle數(shù)據(jù)庫默認(rèn)不支持像 SQLServer、MySQL中的自增長(auto increment)功能,即自動為每一行記錄的自增長字段生成下一個值。
二、Oracle ID自增長方法
第一種,通過序列(sequence)以及觸發(fā)器(trigger)實現(xiàn)主鍵自增長。
?????? 序列是Oracle數(shù)據(jù)庫中用來生成唯一數(shù)值的對象,可以類比于MySQL中的自增長。使用序列遞增生成的數(shù)字當(dāng)作主鍵時,防止并發(fā)訪問時產(chǎn)生重復(fù)的主鍵值。
?????? 觸發(fā)器可以在INSERT、UPDATE和DELETE操作執(zhí)行之前或之后自動運行PL/SQL代碼。對于使用序列生成自增長主鍵的情況,可以通過在插入語句之前定義一個觸發(fā)器,在INSERT語句執(zhí)行時觸發(fā)自動生成下一個序列值。
??????? 這種方式適用于直接使用JDBC連接數(shù)據(jù)庫。這種方式將主鍵自增長的任務(wù)完全交給數(shù)據(jù)庫,我們無需在代碼層面上進(jìn)行任何控制。
第二種,通過序列(sequence)以及Hibernate(JavaWeb框架)配置實現(xiàn)自增長。
??????? 這種方式適用于通過Hibernate連接數(shù)據(jù)庫的方式。這種方式在數(shù)據(jù)庫上創(chuàng)建序列,通過配置在POJO類上的注釋,讓Hibernate去調(diào)用數(shù)據(jù)庫的序列實現(xiàn)自增長。
??????? 這兩種方式都是通過Oracle的序列實現(xiàn)自增長,但第一種通過數(shù)據(jù)庫的觸發(fā)器在插入的時候自動插入主鍵。而后者則由Hibernate自動完成獲取主鍵,插入主鍵這一操作。
三、Navicat創(chuàng)建--序列和觸發(fā)器
序列和觸發(fā)器的位置在【其他】選項里面。
3.1、創(chuàng)建表:保存時命名? T_STU
示例字段只需要一個id,一個name即可
?3.2、序列-創(chuàng)建序列:保存時命名 Seq001
?3.3、觸發(fā)器-創(chuàng)建觸發(fā)器:保存時命名?? Trigger001
常規(guī)選項卡中:觸發(fā)器類型選【TABLE】,表模式選【ROOT】,表明選擇【T_STU】
高級選項卡中選填:引用舊【OLD】,引用新的【NEW】
?定義選項卡中:需要將序列Seq001的序號查出來并放入T_STU表的id中。
BEGIN
select "Seq001".nextval into :NEW."id" from dual;
END;
3.4、最后看一下預(yù)覽SQL
其中"Untitled"是未保存的默認(rèn)觸發(fā)器名。
3.5、最后一步插入數(shù)據(jù)觀察遞增情況
四、SQL語句創(chuàng)建--序列和觸發(fā)器
-- 創(chuàng)建表
CREATE TABLE "T_STU" (
"id" NUMBER NOT NULL PRIMARY KEY,
"name" VARCHAR2(255)
);
-- 創(chuàng)建序列
CREATE SEQUENCE "Seq01" MINVALUE 1 INCREMENT BY 1 NoMaxValue START WITH 1;
-- 創(chuàng)建觸發(fā)器
create TRIGGER "Trigger01" BEFORE INSERT ON "T_STU"
FOR EACH ROW
BEGIN
SELECT "Seq01".nextval INTO :NEW."id" FROM dual;
END;
-- 插入數(shù)據(jù)
INSERT INTO "T_STU" ("name") VALUES ('小紅');
-- 查看結(jié)果
SELECT * FROM "T_STU";
?
參考:Oracle ID自增長詳解_筆記大全_設(shè)計學(xué)院
Oracle實現(xiàn)主鍵自增長的幾種方式-騰訊云開發(fā)者社區(qū)-騰訊云
Oracle數(shù)據(jù)表ID自增操作_oracle自增id怎么設(shè)置-CSDN博客
柚子快報激活碼778899分享:Oracle數(shù)據(jù)表ID自增操作
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。