-----oracle 指定字段 自增 ,1.要先創建一個序列 2. 之后創建一個觸發器
公司主營業務:網站制作、做網站、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯公司推出畢節免費做網站回饋大家。
--- 序列 (序列與觸發器實現t_sys_organize表中F_ID字段的自動增長)
create sequence t_sys_organize_F_ID_SEQUENCE
minvalue 100000
maxvalue 99999999
start with 100000
increment by 1
nocache;
--觸發器 (序列與觸發器實現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數據庫使用命令行操作,注意Oracle不能直接設置自增字段,需要使用序列+觸發器來實現。
1.創建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.創建自增序列
create sequence BOOK_seq (BOOK_seq為序列名,任意取)
increment by 1 (increment 表示字段逐條增加1)
start with 1 (設置自增序列的初始值為1)
nomaxvalue (不限制自增序列的最大值)
minvalue 1; (設置自增序列的最小值為1)
3.試用一下,向BOOK表中插入一條數據,Id列就引用了自增序列。
insert into BOOK values(BOOK_seq.nextval,'a','a','a','a',32.1,'a',
'a','1.jpg');
注意:
操作之后記得輸入“commit;“保存操作。
Oracle數據庫的的命令行創建表,系統會自動轉化為大寫字母,假如使用數據庫操作客戶端,那么建表等操作時記得字段名大寫。
你好!
簡單點的方法:
在表中增加一個列,為自增序列,然后執行:
update 表 set 自增序列=rownum;
這樣快速,還不會出錯。
oracle:
oracle沒有自增長序列,因此可以用以下方法來實現
1.建立表格:
createtabletable1
(
cidnumber(8)notnull,
othersvarchar2(20)
);
2.建立從1開始的序列:
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數
nomaxvalue--不設置最大值
nocycle--一直累加,不循環
nocache--不建緩沖區3.建立觸發器:
createorreplacetriggermytgr
beforeinsertontable1foreachrow
begin
selectmytgr.nextvalinto:new.cidfromdual;
end;
mysql:
createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,
a_titlevarchar(32),
a_contenttext);
觸發器(trigger)或者序列(sequence)來實現。1、序列(sequence) create sequence Sequence_name increment by 1 --表示從1開始計值 start with 1 --每次增長1 nomaxvalue / maxvalue 999999 --有兩個可選值,要么無最大值,要么指定最大值; minvalue 1 / nominvaluecycle--表示達到最大值后從頭開始,也可以為nocycle;cache 10--指定cache的值。如果指定CACHE值,oracle就可以預先在內存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動再取一組到cache。使用cache或許會跳號, 比如數據庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況。 order;--指定排序 序列提供兩個方法,NextVal和CurrVal。顧名思義,NextVal為取序列的下一個值,一次NEXTVAL會增加一次sequence的值;CurrVal為取序列的當前值。例如,插入記錄時: insert tablename(id) values(sequence_id.nextval);--sequence_id為序列名 但是要注意的是:第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會自動增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL總是返回當前sequence的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否則會出錯。2、觸發器(trigger) create or replace trigger trigger_name before insert on your_sid.tablename for each rowbegindeclarei number; cursor cur is select max(id) from your_sid.tablename;BEGINopen cur;FETCH cur INTO i; if i is NULL then :new.id := 0; //可以根據實際需要來定初始值else :new.id := i + 1; //這里以1遞增end if;Close cur;END;END;/其中:your_sid為數據庫的當前用戶SID,tablename為表名,id為列名
按磁盤剩余空間的10%自動增長,這個實現不了。 如果表空間設置為自動增長,在空間不足的情況下Oracle系統會自動增長表空間的,但是也不會超過磁盤的總空間大小。 創建表空間的語法如下:create tablespace jydbdatafile 'XXX\XXX\xx.dbf' --這里數據文件的路徑你自己視情況定size 5120Mautoextend onnext 1024Mextent management local --這里設置表空間為本地管理
網頁名稱:oracle中自增怎么寫,oracle insert自增
標題路徑:http://m.kartarina.com/article30/hddgso.html
成都網站建設公司_創新互聯,為您提供網站內鏈、微信公眾號、小程序開發、網站建設、全網營銷推廣、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯