新聞中心
oracle中如何實現(xiàn)某一字段自增
-----oracle 指定字段 自增 ,1.要先創(chuàng)建一個序列 2. 之后創(chuàng)建一個觸發(fā)器
創(chuàng)新互聯(lián)是一家專業(yè)提供莒南企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為莒南眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。
--- 序列 (序列與觸發(fā)器實現(xiàn)t_sys_organize表中F_ID字段的自動增長)
create sequence t_sys_organize_F_ID_SEQUENCE
minvalue 100000
maxvalue 99999999
start with 100000
increment by 1
nocache;
--觸發(fā)器 (序列與觸發(fā)器實現(xiàn)t_sys_organize表中F_ID字段的自動增長)
CREATE OR REPLACE TRIGGER t_sys_organize_F_ID_TRIGGER BEFORE INSERT ON t_sys_organize FOR EACH ROW WHEN(NEW.F_ID IS NULL)
BEGIN
SELECT t_sys_organize_F_ID_SEQUENCE.NEXTVAL INTO:NEW.F_ID FROM dual;
END;
oracle是怎么實現(xiàn)表的自增
用觸發(fā)器trigger的功能來實現(xiàn)它: 1、首先建立一個創(chuàng)建自增字段的存儲過程create or replace procedure pro_create_seq_col
(tablename varchar2,columnname varchar2)
as
strsql varchar2(1000);
begin
strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';
execute immediate strsql;
strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end;';
execute immediate strsql;
end;
/
2、Oracle中執(zhí)行動態(tài)SQL時要顯示授權(quán)(即使該用戶擁有該相關(guān)權(quán)限)GRANT CREATE ANY SEQUENCE TO UserName;
GRANT CREATE ANY TRIGGER TO UserName;
3、重新Compile存儲過程pro_create_seq_col; 4、搞定,下面我們就可以用這個存儲過程建立自增自段了。 5、調(diào)用存儲過程建立自增字段(提示: 第一個參數(shù)是表名,第二個參數(shù)為自增字段的名字)exec pro_create_seq_col('sb_zsxx','zsxh');
exec pro_create_seq_col('sb_sbxx','sbxh');
exec pro_create_seq_col('sb_jkx','pzxh');
exec pro_create_seq_col('sdspfp','sysfpid');
oracle怎么把主鍵設(shè)置自動增長
第一種,通過序列以及觸發(fā)器實現(xiàn)主鍵自增長。
這種方式適用于直接使用JDBC連接數(shù)據(jù)庫。這種方式將主鍵自增長的任務(wù)完全交給數(shù)據(jù)庫,我們無需在代碼層面上進行任何控制。
第二種,通過序列以及Hibernate配置實現(xiàn)自增長。
這種方式適用于通過Hibernate連接數(shù)據(jù)庫的方式。這種方式在數(shù)據(jù)庫上創(chuàng)建序列,通過配置在POJO類上的注釋,讓Hibernate去調(diào)用數(shù)據(jù)庫的序列實現(xiàn)自增長。
這兩種方式都是通過Oracle的序列實現(xiàn)自增長,但第一種通過數(shù)據(jù)庫的觸發(fā)器在插入的時候自動插入主鍵。而后者則由Hibernate自動完成獲取主鍵,插入主鍵這一操作。
oracle 如何實現(xiàn)主鍵id自增,或自動生成
一、主鍵id自增
oracle 中不能設(shè)置自動增加,這個和其他數(shù)據(jù)庫不一樣,但是有 序列,這個是Oracle自己特有的東西,
1、首先創(chuàng)建序列:create sequence seq;
語法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加幾
[START WITH n] --序列從幾開始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制
比CREATE SEQUENCE seq start with 1 increment by 1; --建立了額從1開始每次加1序列
訪問序列時用 序列名稱.nextval語法
這就創(chuàng)建好了,然后 seq.nextval 就會返回一個值,不會重復的值,
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
這樣前3個id 分別是 1,2,3
二、自動生成UUID策略
import java.util.UUID;
Student s = new Student();
s.setId(UUID.randomUUID().toString());
Oracle怎么建自動增長列
oracle:
oracle沒有自增長序列,因此可以用以下方法來實現(xiàn)
1.建立表格:
createtabletable1
(
cidnumber(8)notnull,
othersvarchar2(20)
);
2.建立從1開始的序列:
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數(shù)
nomaxvalue--不設(shè)置最大值
nocycle--一直累加,不循環(huán)
nocache--不建緩沖區(qū)3.建立觸發(fā)器:
createorreplacetriggermytgr
beforeinsertontable1foreachrow
begin
selectmytgr.nextvalinto:new.cidfromdual;
end;
mysql:
createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,
a_titlevarchar(32),
a_contenttext);
在oracle 怎樣設(shè)置自動遞增的的字段?
關(guān)于主鍵:在建表時指定primary key字句即可:
create table test(
id ?number(6) primary key,
name varchar2(30)
);
如果是對于已經(jīng)建好的表,想增加主鍵約束,則類似語法:
alter table test add constraint pk_id primary key(id); ?
其中add constraint 和 primary key是關(guān)鍵字,pk_id是主鍵名稱,自定義的額,只要不重復即可。
也可以自動一些,對表的插入操作,建立一個觸發(fā)器,每當有數(shù)據(jù)插入時,觸發(fā)器自動修改id值為序列的新值,這樣就完全實現(xiàn)自增id功能了。不過其實也沒有這個必要。因為觸發(fā)器如果建多了,有時會比較混亂,不易管理。
網(wǎng)站題目:oracle自增如何實現(xiàn) Oracle 自增
瀏覽路徑:http://www.ef60e0e.cn/article/hisesc.html