用觸發(fā)器trigger的功能來(lái)實(shí)現(xiàn)它: 1、首先建立一個(gè)創(chuàng)建自增字段的存儲(chǔ)過(guò)程create or replace procedure pro_create_seq_col

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、中站網(wǎng)站維護(hù)、網(wǎng)站推廣。
(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í)行動(dòng)態(tài)SQL時(shí)要顯示授權(quán)(即使該用戶擁有該相關(guān)權(quán)限)GRANT CREATE ANY SEQUENCE TO UserName;
GRANT CREATE ANY TRIGGER TO UserName;
3、重新Compile存儲(chǔ)過(guò)程pro_create_seq_col; 4、搞定,下面我們就可以用這個(gè)存儲(chǔ)過(guò)程建立自增自段了。 5、調(diào)用存儲(chǔ)過(guò)程建立自增字段(提示: 第一個(gè)參數(shù)是表名,第二個(gè)參數(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中沒(méi)有自動(dòng)增長(zhǎng),只有序列號(hào)\x0d\x0a添加一條記錄和sqlserver一樣\x0d\x0a語(yǔ)法:insert into table(列,列,列) values(value,value,value); \x0d\x0a\x0d\x0a如果有個(gè)自動(dòng)增長(zhǎng)列\(zhòng)x0d\x0a可以用這種方法,首先創(chuàng)建一個(gè)序列號(hào)SEQ_Test\x0d\x0a然后insert into table(ID,列,列) values(SEQ_Test.nextval,value,value);
-----oracle 指定字段 自增 ,1.要先創(chuàng)建一個(gè)序列 2. 之后創(chuàng)建一個(gè)觸發(fā)器
--- 序列 (序列與觸發(fā)器實(shí)現(xiàn)t_sys_organize表中F_ID字段的自動(dòng)增長(zhǎng))
create sequence t_sys_organize_F_ID_SEQUENCE
minvalue 100000
maxvalue 99999999
start with 100000
increment by 1
nocache;
--觸發(fā)器 (序列與觸發(fā)器實(shí)現(xiàn)t_sys_organize表中F_ID字段的自動(dòng)增長(zhǎng))
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數(shù)據(jù)庫(kù)使用命令行操作,注意Oracle不能直接設(shè)置自增字段,需要使用序列+觸發(fā)器來(lái)實(shí)現(xiàn)。
1.創(chuàng)建Book表
Create table Book(
Id NUMBER(6) constraint s_PK primary key,
Title nvarchar2(200) not null,
Author nvarchar2(200) not null,
Publisher nvarchar2(200) not null,
ISBN nvarchar2(50) not null,
Price NUMBER(6,2) not null,
CategoryName nvarchar2(50) not null,
Description nvarchar2(1000) not null,
ImageName varchar2(50)
);
2.創(chuàng)建自增序列
create sequence BOOK_seq (BOOK_seq為序列名,任意取)
increment by 1 (increment 表示字段逐條增加1)
start with 1 (設(shè)置自增序列的初始值為1)
nomaxvalue (不限制自增序列的最大值)
minvalue 1; (設(shè)置自增序列的最小值為1)
3.試用一下,向BOOK表中插入一條數(shù)據(jù),Id列就引用了自增序列。
insert into BOOK values(BOOK_seq.nextval,'a','a','a','a',32.1,'a',
'a','1.jpg');
注意:
操作之后記得輸入“commit;“保存操作。
Oracle數(shù)據(jù)庫(kù)的的命令行創(chuàng)建表,系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)化為大寫(xiě)字母,假如使用數(shù)據(jù)庫(kù)操作客戶端,那么建表等操作時(shí)記得字段名大寫(xiě)。
名稱欄目:oracle中如何自增 oracle數(shù)據(jù)庫(kù)自增
分享地址:http://chinadenli.net/article12/hjeggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、做網(wǎng)站、關(guān)鍵詞優(yōu)化、定制開(kāi)發(fā)、Google、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)