W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
ALTER SEQUENCE — 更改一個(gè)序列發(fā)生器的定義
ALTER SEQUENCE [ IF EXISTS ] name [ AS data_type ] [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE
maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ]
[ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]ALTER SEQUENCE [ IF EXISTS ] name
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_nameALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
ALTER SEQUENCE
更改一個(gè)現(xiàn)有序列發(fā)生器的參數(shù)。 任何沒(méi)有在ALTER SEQUENCE
命令中明確設(shè)置的參數(shù) 保持它們之前的設(shè)置。
要使用ALTER SEQUENCE
,你必須擁有該序列。要更改一個(gè)序列 的模式,你還必須擁有新模式上的CREATE
特權(quán)。要更改擁有者,你還必須 是新?lián)碛薪巧囊粋€(gè)直接或者間接成員,并且該角色必須具有該域的模式上的 CREATE
特權(quán)(這些限制強(qiáng)制修改擁有者不能做一些通過(guò)刪除和重 建該序列做不到的事情。不過(guò),一個(gè)超級(jí)用戶(hù)怎么都能更改任何序列的所有權(quán)。)。
name
要修改的序列的名稱(chēng)(可以是模式限定的)。
IF EXISTS
在序列不存在時(shí)不要拋出一個(gè)錯(cuò)誤。這種情況下會(huì)發(fā)出一個(gè)提示。
data_type
可選子句AS
改變序列的數(shù)據(jù)類(lèi)型。有效類(lèi)型是data_type
smallint
、integer
和bigint
。
當(dāng)且僅當(dāng)先前的最小值和最大值是舊數(shù)據(jù)類(lèi)型的最小值或最大值時(shí)(換句話說(shuō), 如果序列是使用NO MINVALUE
或NO MAXVALUE
, 隱式或顯式創(chuàng)建的),則更改數(shù)據(jù)類(lèi)型會(huì)自動(dòng)更改序列的最小值和最大值。 否則,將保留最小值和最大值,除非將新值作為同一命令的一部分給出。 如果最小值和最大值不符合新的數(shù)據(jù)類(lèi)型,則會(huì)生成錯(cuò)誤。
increment
子句INCREMENT BY
是可選的。 一個(gè)正值將產(chǎn)生一個(gè)上升序列,一個(gè)負(fù)值會(huì)產(chǎn)生一個(gè)下降序列。如果 沒(méi)有指定,舊的增量值將被保持。increment
minvalue
NO MINVALUE
可選的子句MINVALUE
決定一個(gè)序列 能產(chǎn)生的最小值。如果指定了minvalue
NO
MINVALUE
,上升序列和下降序列的默認(rèn)值分別是 1 和 數(shù)據(jù)類(lèi)型的最小值。如果這些選項(xiàng)都沒(méi)有被指定,將保持當(dāng)前的 最小值。
maxvalue
NO MAXVALUE
可選的子句MAXVALUE
決定一個(gè)序列 能產(chǎn)生的最大值。如果指定了maxvalue
NO
MAXVALUE
,上升序列和下降序列的默認(rèn)值分別是 數(shù)據(jù)類(lèi)型的最大值和 -1。如果這些選項(xiàng)都沒(méi)有被指定,將保持當(dāng)前的 最大值。
start
可選的子句START WITH
更改該序列被記錄的開(kāi)始值。 這對(duì)于當(dāng)前序列值沒(méi)有影響,它會(huì)簡(jiǎn)單地設(shè)置 未來(lái)start
ALTER SEQUENCE RESTART
命令將會(huì)使用的值。
restart
可選的子句RESTART [ WITH
更改該序列的 當(dāng)前值。這類(lèi)似于用restart
]is_called
= false
調(diào)用setval
函數(shù):被指定的值將會(huì)被 下一次nextval
調(diào)用返回。寫(xiě)上沒(méi)有 restart
值的
RESTART
等效于提供被 CREATE SEQUENCE
記錄的或者上一次被 ALTER SEQUENCE START WITH
設(shè)置的開(kāi)始值。
與setval
調(diào)用相比,序列上的RESTART
操作是事務(wù)性的并阻止并發(fā)事務(wù)從同一序列中獲取數(shù)字。 如果這不是所需的操作模式,則應(yīng)使用setval
。
cache
子句CACHE
使得序列數(shù)字被預(yù)先 分配并且保存在內(nèi)存中以便更快的訪問(wèn)。最小值是 1(每次只產(chǎn)生一個(gè)值,即 無(wú)緩存)。如果沒(méi)有指定,舊的緩沖值將被保持。cache
CYCLE
可選的CYCLE
關(guān)鍵詞可以被用來(lái)允許該序列在達(dá)到 maxvalue
(上升序列)或 minvalue
(下降序列)時(shí) 回卷。如果到達(dá)該限制,下一個(gè)被產(chǎn)生的數(shù)字將分別是 minvalue
或者 maxvalue
。
NO CYCLE
如果指定了可選的NO CYCLE
關(guān)鍵詞,任何在該 序列到達(dá)其最大值后的nextval
調(diào)用將會(huì)返回 一個(gè)錯(cuò)誤。如果既沒(méi)有指定CYCLE
也沒(méi)有指定 NO CYCLE
,舊的循環(huán)行為將被保持。
OWNED BY
table_name
.column_name
OWNED BY NONE
OWNED BY
選項(xiàng)導(dǎo)致該序列與一個(gè)特定的表列相關(guān)聯(lián), 這樣如果該列(或者整個(gè)表)被刪除,該序列也會(huì)被自動(dòng)刪除。如果指定, 這種關(guān)聯(lián)會(huì)替代之前為該序列指定的任何關(guān)聯(lián)。被指定的表必須具有相同的 擁有者并且與該序列在同一個(gè)模式中。指定 OWNED BY NONE
可以移除任何現(xiàn)有的關(guān)聯(lián),讓該序列 “自立”。
new_owner
該序列的新?lián)碛姓叩挠脩?hù)名。
new_name
該序列的新名稱(chēng)。
new_schema
該序列的新模式。
ALTER SEQUENCE
將不會(huì)立即影響除當(dāng)前后端外 其他后端中的nextval
結(jié)果,因?yàn)樗鼈冇蓄A(yù)分配(緩存)的序列 值。在注意到序列生成參數(shù)被更改之前它們將用盡所有緩存的值。當(dāng)前后端將被 立刻影響。
ALTER SEQUENCE
不會(huì)影響該序列的 currval
狀態(tài)(在 PostgreSQL 8.3 之前有時(shí)會(huì)影響)。
ALTER SEQUENCE
阻塞并發(fā)nextval
、 currval
、lastval
和 setval
調(diào)用。
由于歷史原因,ALTER TABLE
也可以被用于序列, 但是只有等效于上述形式的ALTER TABLE
變體才被 允許用于序列。
在 105 重啟一個(gè)被稱(chēng)為serial
的序列:
ALTER SEQUENCE serial RESTART WITH 105;
ALTER SEQUENCE
符合SQL
標(biāo)準(zhǔn),不過(guò)AS
、START WITH
、 OWNED BY
、OWNER TO
、RENAME TO
以及
SET SCHEMA
子句是 PostgreSQL擴(kuò)展。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: