新聞中心
Oracle怎么修改一部分序列值為指定的值
根據(jù)我自己的經(jīng)驗,oracle的序列是不認自己填寫的數(shù)字的,所以想要這么操作只能先刪除序列才可以。
創(chuàng)新互聯(lián)公司長期為成百上千客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為上饒企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站設計,上饒網(wǎng)站改版等技術(shù)服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
如果是修改的話,要刪除序列才能修改,也就是數(shù)艘要分三步操作
(1)刪除序列(把語句復制下來),可是也要復制觸發(fā)器的語句(當然重新編譯一下觸發(fā)器也可以,這樣會讓觸發(fā)器無效)
(2)修改序號(至于你說的修改為指定區(qū)間,這個簡單,比如你要把1-20,改為50001-50020,那么就是id+50000即可,只要where中限定范圍就可以了。)
(3)重建序列,并重新設定起始值(至少設定為新的最大值+1),別忘了相關(guān)觸發(fā)器
oracle創(chuàng)建序列的語法
--創(chuàng)建序列的語法 --
CREATE SEQUENCE SEQ_POS_ORDER_ONLINE_ID
INCREMENT BY 1
START WITH 1000000000000042 -- 從1開始計數(shù) 或 MINVALUE 1 或 NOMINVALUE --的設置最小值 不設置最小值
NOMAXvalue -- 不設置最大值 或 MAXVALUE 10 --設置最大值 10
NOCYCLE -- 一直累加,不循環(huán) 或
CACHE 10; --設置緩存cache個序列,如果系統(tǒng)down掉了或者其它情況將會導致序列不連續(xù),也可以設置為---------NOCACHE
oracle創(chuàng)建序列 怎么指定表
CREATE SEQUENCE emp_sequence -- emp_sequence這個就是后面要用到這個序列號時引用的名稱
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數(shù)
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環(huán)
CACHE 100; -- 緩存值 100
當 需要使用該序列號的值時,直接調(diào)用創(chuàng)建的序號號中的 nextval方法。
如: emp_sequence.nextval (注意:后面沒有括號,它是一個屬性值)
刪除序列
DROP SEQUENCE emp_sequence;
如何給oracle中的表建一個序列
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、createsequence
你首先要有createsequence或者createanysequence權(quán)限,
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數(shù)
nomaxvalue--不設置最大值
nocycle--一直累加,不循環(huán)
cache10;
一旦定義了emp_sequence,你就可以用currval,nextval
currval=返回sequence的當前值
nextval=增加sequence的值,然后返回sequence值
比如:
emp_sequence.currval
emp_sequence.nextval
可以使用sequence的地方:
-不包含子查詢、snapshot、view的select語句
-insert語句的子查詢中
-nsert語句的values中
-update的set中
可以看如下例子:
insertintoempvalues
(empseq.nextval,'lewis','clerk',7902,sysdate,1200,null,20);
selectempseq.currvalfromdual;
但是要注意的是:
-第一次nextval返回的是初始值;隨后的nextval會自動增加你定義的incrementby值,然后返回增加后的值。currval總是返回當前sequence的值,但是在第一次nextval初始化之后才能使用currval,否則會出錯。一次nextval會增加一次sequence的值,所以如果你在同一個語句里面使用多個nextval,其值就是不一樣的。明白?
-如果指定cache值,oracle就可以預先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動再取一組到cache。使用cache或許會跳號,比如數(shù)據(jù)庫突然不正常down掉(shutdownabort),cache中的sequence就會丟失.所以可以在createsequence的時候用nocache防止這種情況。
2、altersequence
你或者是該sequence的owner,或者有alteranysequence權(quán)限才能改動sequence.可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須dropsequence再re-create.
altersequence的例子
altersequenceemp_sequence
incrementby10
maxvalue10000
cycle--到10000后從頭開始
nocache;
影響sequence的初始化參數(shù):
sequence_cache_entries=設置能同時被cache的sequence數(shù)目。
可以很簡單的dropsequence
dropsequenceorder_seq;
當前文章:oracle怎么指定序列,oracle序列設置指定值
文章出自:http://fisionsoft.com.cn/article/hsjceh.html