1. 建立序列html
語法sql
CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]
參數說明:緩存
TEMPORARY 或 TEMP 若是聲明瞭這個修飾詞,那麼該序列對象只爲這個會話建立, 而且在會話結束的時候自動刪除。在臨時序列存在的時候, 除非用模式修飾的名字引用,不然同名永久序列是不可見的(在同一會話裏)。 name 將要建立的序列名(能夠用模式修飾) increment 可選子句INCREMENT BY increment指定序列的步長。 一個正數將生成一個遞增的序列,一個負數將生成一個遞減的序列。缺省值是 1 。 minvalue NO MINVALUE 可選的子句MINVALUE minvalue 指定序列的最小值。若是沒有聲明這個子句或者聲明瞭NO MINVALUE, 那麼遞增序列的缺省爲 1 ,遞減序列的缺省爲-263-1。 maxvalue NO MAXVALUE 可選的子句MAXVALUE maxvalue 指定序列的最大值。若是沒有聲明這個子句或者聲明瞭NO MAXVALUE, 那麼遞增序列的缺省爲263-1,遞減序列的缺省爲 -1 。 start 可選的子句START WITH start 指定序列的起點。缺省初始值對於遞增序列爲minvalue, 對於遞減序列爲maxvalue。 cache 可選的子句CACHE cache 爲快速訪問而在內存裏預先存儲多少個序列號。最小值(也是缺省值)是 1 , 表示一次只能生成一個值,也就是說沒有緩存。 CYCLE NO CYCLE CYCLE選項可用於使序列到達 maxvalue或 minvalue時可循環並繼續下去。 也就是若是達到極限,生成的下一個數據將分別是 minvalue 或maxvalue。 若是聲明瞭NO CYCLE,那麼在序列達到其最大值以後任何對 nextval的調用都將返回一個錯誤。 若是既沒有聲明CYCLE也沒有聲明NO CYCLE, 那麼NO CYCLE是缺省。 OWNED BY table_name.column_name OWNED BY NONE OWNED BY選項將序列關聯到一個特定的表字段上。這樣, 在刪除那個字段或其所在表的時候將自動刪除綁定的序列。 指定的表和序列必須被同一個用戶所擁有,而且在在同一個模式中。 默認的OWNED BY NONE表示不存在這樣的關聯。
實例:函數
create sequence serial increment by 2 minvalue 1 no maxvalue start with 1; select nextval('serial');
2. 修改序列rest
語法:htm
ALTER SEQUENCE [ IF EXISTS ] name [ 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 ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
參數說明:對象
name 一個要修改的序列的名字(能夠有模式修飾)。 IF EXISTS 當序列不存在時使用該選項不會出現錯誤消息,僅有一個通知。 increment INCREMENT BY increment選項是可選的。 一個正數會讓序列成爲遞增序列,負數則成爲遞減序列。若是沒有聲明,將沿用原來的遞增值。 minvalue NO MINVALUE MINVALUE minvalue是一個可選選項,它決定一個序列能夠生成的最小的值。 若是聲明瞭NO MINVALUE,那麼將使用缺省值,對於遞增和遞減的序列分別是1和-263-1。 若是沒有聲明則沿用當前的最小值。 maxvalue NO MAXVALUE MAXVALUE maxvalue是一個可選選項,它決定一個序列能夠生成的最大的值。 若是聲明瞭NO MAXVALUE那麼將使用缺省值,對於遞增和遞減的序列分別是263-1和-1。 若是沒有聲明則沿用當前的最大值。 start START WITH start是一個可選選項,它修改序列的起始值。 這對序列當前值沒有影響;它僅設置未來的ALTER SEQUENCE RESTART命令將會使用的值。 restart RESTART [ WITH restart ]是一個可選選項,它改變序列的當前值。 這至關於用is_called = false參數調用setval 函數 :指定的值將會經過nextval的next調用返回。 不使用restart參數值來使用RESTART選項至關於使用CREATE SEQUENCE或由ALTER SEQUENCE START WITH設置的初始值。 cache CACHE cache選項打開序列號預分配功能以及爲了快速存取而在內存中存儲的功能。 最小值是1(表示每次只能生成一個數值,沒有緩衝)。若是沒有聲明,將沿用舊的緩衝值。 CYCLE 可選的 CYCLE選項用於設置升序序列或是降序序列在達到maxvalue或者minvalue的時候循環使用。 若是達到了極限, 那麼生成的下一個數字將分別是minvalue或者maxvalue。 NO CYCLE 若是聲明瞭可選的NO CYCLE選項,任何在序列達到其極限後對nextval的調用都將返回錯誤。 若是未聲明CYCLE或者NO CYCLE,那麼將沿用原有的循環行爲。 OWNED BY table_name.column_name OWNED BY NONE OWNED BY選項將序列和一個表的特定字段關聯, 這樣,若是那個字段(或整個表)被刪除了,那麼序列也將被自動刪除。 若是序列已經與表有關聯後,使用這個選項後新關聯將覆蓋舊有的關聯。 指定的表必須與序列的全部者相同而且在同一個模式中。 使用OWNED BY NONE將刪除任何已經存在的關聯,也就是讓該序列變成"獨立"序列。 new_owner 序列新全部者的用戶名。 new_name 序列的新名稱。 new_schema 序列的新模式。
實例:blog
修改serial序列的起始值和步長。內存
alter sequence serial increment by 3 restart with 10; select nextval('serial');
3. 刪除序列rem
語法:
DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
參數說明:
IF EXISTS 若是指定的序列不存在,那麼發出一個 notice 而不是拋出一個錯誤。 name 序列名(能夠有模式修飾)。 CASCADE 級聯刪除依賴序列的對象。 RESTRICT 若是存在任何依賴的對象,則拒絕刪除序列。這個是缺省。
實例:
drop sequence serial;