{"Entry":{"collection":"sql","key":"alter-sequence","name":"ALTER SEQUENCE","aliases":["altersequence"],"metadata":{"aliases":["altersequence"],"changed_in":["8.1","8.2","8.3","8.4","9.2","9.5","10","14","15","18"],"changes":[{"from":"7.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"added","synopsis":null,"to":"7.4"},{"from":"7.4","purpose_changed":true,"renamed":null,"sections":{"added":[],"changed":["compatibility"],"removed":[]},"status":"changed","synopsis":null,"to":"8.0"},{"from":"8.0","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","parameters","notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE name SET SCHEMA new_schema"],"removed":[]},"to":"8.1"},{"from":"8.1","purpose_changed":false,"renamed":null,"sections":{"added":["see_also"],"changed":["parameters","notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["[ OWNED BY { table.column | NONE } ]"],"removed":[]},"to":"8.2"},{"from":"8.2","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters","notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE name RENAME TO new_name","ALTER SEQUENCE name SET SCHEMA new_schema"],"removed":[]},"to":"8.3"},{"from":"8.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","parameters","notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["[ START [ WITH ] start ]","[ RESTART [ [ WITH ] restart ] ]","ALTER SEQUENCE name OWNER TO new_owner","ALTER SEQUENCE name RENAME TO new_name"],"removed":["[ RESTART [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]"]},"to":"8.4"},{"from":"9.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]","[ 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"],"removed":["[ OWNED BY { table.column | NONE } ]"]},"to":"9.2"},{"from":"9.4","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"9.5"},{"from":"9.6","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters","notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["[ AS data_type ]"],"removed":[]},"to":"10"},{"from":"13","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"14"},{"from":"14","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }","ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"15"},{"from":"15","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"16"},{"from":"17","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["[ [ NO ] CYCLE ]","[ START [ WITH ] start ]"],"removed":["[ CACHE cache ] [ [ NO ] CYCLE ]"]},"to":"18"}],"content_hash":"96cbe10f08333d9388aef63e6725cb9252b475cd2cd4f7a5d5c6dba451765a84","editorial":{},"first_version":"7.4","group":"table","imported_at":"2026-09-30T17:43:35.995172+08:00","last_version":"20","name":"ALTER SEQUENCE","object":"SEQUENCE","position":6,"present_in":["7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"purpose":"change the definition of a sequence generator","purpose_zh":"","related":["create-sequence","drop-sequence"],"slug":"alter-sequence","source_rev":"a709ab85","synopsis":"ALTER SEQUENCE [ IF EXISTS ] name\n[ AS data_type ]\n[ INCREMENT [ BY ] increment ]\n[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n[ [ NO ] CYCLE ]\n[ START [ WITH ] start ]\n[ RESTART [ [ WITH ] restart ] ]\n[ CACHE cache ]\n[ OWNED BY { table_name.column_name | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name\nALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema","verb":"ALTER"}},"Definition":{"Collection":"sql","Key":"alter-sequence","SourceDatabase":"center","Version":"18","SourceTable":"sqlcmd","SourceKey":"alter-sequence","SourceRevision":"a709ab85","Facts":{"anchor":"SQL-ALTERSEQUENCE","file":"sql-altersequence.html","lang":"en","name":"ALTER SEQUENCE","purpose":"change the definition of a sequence generator","purpose_zh":"","related":["create-sequence","drop-sequence"],"sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e changes the parameters of an existing sequence generator. Any parameters not specifically set in the \u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e command retain their prior settings.\u003c/p\u003e\u003cp\u003eYou must own the sequence to use \u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e. To change a sequence's schema, you must also have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the new schema. To alter the owner, you must be able to \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e to the new owning role, and that role must have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the sequence's schema. (These restrictions enforce that altering the owner doesn't do anything you couldn't do by dropping and recreating the sequence. However, a superuser can alter ownership of any sequence anyway.)\u003c/p\u003e","key":"description","title":"Description"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name (optionally schema-qualified) of a sequence to be altered.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eDo not throw an error if the sequence does not exist. A notice is issued in this case.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional clause \u003ccode class=\"literal\"\u003eAS \u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e changes the data type of the sequence. Valid types are \u003ccode class=\"literal\"\u003esmallint\u003c/code\u003e, \u003ccode class=\"literal\"\u003einteger\u003c/code\u003e, and \u003ccode class=\"literal\"\u003ebigint\u003c/code\u003e.\u003c/p\u003e\u003cp\u003eChanging the data type automatically changes the minimum and maximum values of the sequence if and only if the previous minimum and maximum values were the minimum or maximum value of the old data type (in other words, if the sequence had been created using \u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e or \u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e, implicitly or explicitly). Otherwise, the minimum and maximum values are preserved, unless new values are given as part of the same command. If the minimum and maximum values do not fit into the new data type, an error will be generated.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe clause \u003ccode class=\"literal\"\u003eINCREMENT BY \u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e is optional. A positive value will make an ascending sequence, a negative one a descending sequence. If unspecified, the old increment value will be maintained.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional clause \u003ccode class=\"literal\"\u003eMINVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e determines the minimum value a sequence can generate. If \u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e is specified, the defaults of 1 and the minimum value of the data type for ascending and descending sequences, respectively, will be used. If neither option is specified, the current minimum value will be maintained.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional clause \u003ccode class=\"literal\"\u003eMAXVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e determines the maximum value for the sequence. If \u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e is specified, the defaults of the maximum value of the data type and -1 for ascending and descending sequences, respectively, will be used. If neither option is specified, the current maximum value will be maintained.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional \u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e key word can be used to enable the sequence to wrap around when the \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e or \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e has been reached by an ascending or descending sequence respectively. If the limit is reached, the next number generated will be the \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e or \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e, respectively.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eIf the optional \u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e key word is specified, any calls to \u003ccode class=\"function\"\u003enextval\u003c/code\u003e after the sequence has reached its maximum value will return an error. If neither \u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e or \u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e are specified, the old cycle behavior will be maintained.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional clause \u003ccode class=\"literal\"\u003eSTART WITH \u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e changes the recorded start value of the sequence. This has no effect on the \u003cspan class=\"emphasis\"\u003e\u003cem\u003ecurrent\u003c/em\u003e\u003c/span\u003e sequence value; it simply sets the value that future \u003ccode class=\"command\"\u003eALTER SEQUENCE RESTART\u003c/code\u003e commands will use.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe optional clause \u003ccode class=\"literal\"\u003eRESTART [ WITH \u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e ]\u003c/code\u003e changes the current value of the sequence. This is similar to calling the \u003ccode class=\"function\"\u003esetval\u003c/code\u003e function with \u003ccode class=\"literal\"\u003eis_called\u003c/code\u003e = \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e: the specified value will be returned by the \u003cspan class=\"emphasis\"\u003e\u003cem\u003enext\u003c/em\u003e\u003c/span\u003e call of \u003ccode class=\"function\"\u003enextval\u003c/code\u003e. Writing \u003ccode class=\"literal\"\u003eRESTART\u003c/code\u003e with no \u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e value is equivalent to supplying the start value that was recorded by \u003ccode class=\"command\"\u003eCREATE SEQUENCE\u003c/code\u003e or last set by \u003ccode class=\"command\"\u003eALTER SEQUENCE START WITH\u003c/code\u003e.\u003c/p\u003e\u003cp\u003eIn contrast to a \u003ccode class=\"function\"\u003esetval\u003c/code\u003e call, a \u003ccode class=\"literal\"\u003eRESTART\u003c/code\u003e operation on a sequence is transactional and blocks concurrent transactions from obtaining numbers from the same sequence. If that's not the desired mode of operation, \u003ccode class=\"function\"\u003esetval\u003c/code\u003e should be used.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe clause \u003ccode class=\"literal\"\u003eCACHE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e enables sequence numbers to be preallocated and stored in memory for faster access. The minimum value is 1 (only one value can be generated at a time, i.e., no cache). If unspecified, the old cache value will be maintained.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET { LOGGED | UNLOGGED }\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThis form changes the sequence from unlogged to logged or vice-versa (see \u003ca href=\"/docs/18/sql-createsequence.html\" title=\"CREATE SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e). It cannot be applied to a temporary sequence.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e \u003cem class=\"replaceable\"\u003e\u003ccode\u003etable_name\u003c/code\u003e\u003c/em\u003e.\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eOWNED BY NONE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe \u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e option causes the sequence to be associated with a specific table column, such that if that column (or its whole table) is dropped, the sequence will be automatically dropped as well. If specified, this association replaces any previously specified association for the sequence. The specified table must have the same owner and be in the same schema as the sequence. Specifying \u003ccode class=\"literal\"\u003eOWNED BY NONE\u003c/code\u003e removes any existing association, making the sequence \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003efree-standing\u003c/span\u003e”\u003c/span\u003e.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe user name of the new owner of the sequence.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new name for the sequence.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new schema for the sequence.\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"Parameters"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e will not immediately affect \u003ccode class=\"function\"\u003enextval\u003c/code\u003e results in backends, other than the current one, that have preallocated (cached) sequence values. They will use up all cached values prior to noticing the changed sequence generation parameters. The current backend will be affected immediately.\u003c/p\u003e\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e does not affect the \u003ccode class=\"function\"\u003ecurrval\u003c/code\u003e status for the sequence. (Before \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e 8.3, it sometimes did.)\u003c/p\u003e\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e blocks concurrent \u003ccode class=\"function\"\u003enextval\u003c/code\u003e, \u003ccode class=\"function\"\u003ecurrval\u003c/code\u003e, \u003ccode class=\"function\"\u003elastval\u003c/code\u003e, and \u003ccode class=\"command\"\u003esetval\u003c/code\u003e calls.\u003c/p\u003e\u003cp\u003eFor historical reasons, \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e can be used with sequences too; but the only variants of \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e that are allowed with sequences are equivalent to the forms shown above.\u003c/p\u003e","key":"notes","title":"Notes"},{"html":"\u003cp\u003eRestart a sequence called \u003ccode class=\"literal\"\u003eserial\u003c/code\u003e, at 105:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER SEQUENCE serial RESTART WITH 105;\n\u003c/pre\u003e","key":"examples","title":"Examples"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e conforms to the \u003cacronym\u003eSQL\u003c/acronym\u003e standard, except for the \u003ccode class=\"literal\"\u003eAS\u003c/code\u003e, \u003ccode class=\"literal\"\u003eSTART WITH\u003c/code\u003e, \u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e, \u003ccode class=\"literal\"\u003eOWNER TO\u003c/code\u003e, \u003ccode class=\"literal\"\u003eRENAME TO\u003c/code\u003e, and \u003ccode class=\"literal\"\u003eSET SCHEMA\u003c/code\u003e clauses, which are \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e extensions.\u003c/p\u003e","key":"compatibility","title":"Compatibility"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-sequence/?v=18\" title=\"CREATE SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-sequence/?v=18\" title=\"DROP SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP SEQUENCE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"See Also"}],"sections_same_as":"","slug":"18","synopsis_html":"ALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\n    [ AS \u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e ]\n    [ INCREMENT [ BY ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e ]\n    [ MINVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e | NO MINVALUE ] [ MAXVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e | NO MAXVALUE ]\n    [ [ NO ] CYCLE ]\n    [ START [ WITH ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e ]\n    [ RESTART [ [ WITH ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e ] ]\n    [ CACHE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e ]\n    [ OWNED BY { \u003cem class=\"replaceable\"\u003e\u003ccode\u003etable_name\u003c/code\u003e\u003c/em\u003e.\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e","synopsis_text":"ALTER SEQUENCE [ IF EXISTS ] name\n[ AS data_type ]\n[ INCREMENT [ BY ] increment ]\n[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n[ [ NO ] CYCLE ]\n[ START [ WITH ] start ]\n[ RESTART [ [ WITH ] restart ] ]\n[ CACHE cache ]\n[ OWNED BY { table_name.column_name | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name\nALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema"},"ManualEvidence":{},"MeasuredEvidence":{}},"Text":{"Collection":"sql","Key":"alter-sequence","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"ALTER SEQUENCE","Summary":"更改序列发生器的定义","BodyHTML":"\u003cpre\u003eALTER SEQUENCE [ IF EXISTS ] name\n[ AS data_type ]\n[ INCREMENT [ BY ] increment ]\n[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n[ [ NO ] CYCLE ]\n[ START [ WITH ] start ]\n[ RESTART [ [ WITH ] restart ] ]\n[ CACHE cache ]\n[ OWNED BY { table_name.column_name | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name\nALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema\u003c/pre\u003e\u003csection\u003e\u003ch2\u003e描述\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e更改现有序列发生器的参数。在 \u003ccode\u003eALTER SEQUENCE\u003c/code\u003e命令中未明确设置的参数，会保留其原有设置。\u003c/p\u003e\u003cp\u003e要使用\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e，你必须拥有该序列。要更改序列所在的模式，你还必须在新模式上具有\u003ccode\u003eCREATE\u003c/code\u003e权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode\u003eSET ROLE\u003c/code\u003e，并且该角色必须在该序列所在模式上具有\u003ccode\u003eCREATE\u003c/code\u003e权限。（这些限制确保更改拥有者不会做出任何你不能通过删除并重建该序列来完成的事情。不过，超级用户无论如何都可以更改任何序列的所有权。）\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e参数\u003c/h2\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e要更改的序列名称（可以是模式限定的）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果该序列不存在，则不要抛出错误。这种情况下会发出一条提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode\u003eAS \u003cem\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e 更改序列的数据类型。有效类型是 \u003ccode\u003esmallint\u003c/code\u003e、\u003ccode\u003einteger\u003c/code\u003e和 \u003ccode\u003ebigint\u003c/code\u003e。\u003c/p\u003e\u003cp\u003e当且仅当此前的最小值和最大值就是旧数据类型的最小值或最大值时，更改数据类型才会自动更改序列的最小值和最大值（换句话说，如果该序列在创建时隐式或显式使用了\u003ccode\u003eNO MINVALUE\u003c/code\u003e或\u003ccode\u003eNO MAXVALUE\u003c/code\u003e）。否则，最小值和最大值会被保留，除非在同一条命令中给出了新值。如果最小值和最大值无法适配新数据类型，则会产生错误。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e子句\u003ccode\u003eINCREMENT BY \u003cem\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e是可选的。正值使序列递增，负值使序列递减。如果未指定，则保留原有的增量值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan\u003e\u003ccode\u003eNO MINVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode\u003eMINVALUE \u003cem\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e确定序列可生成的最小值。如果指定了\u003ccode\u003eNO MINVALUE\u003c/code\u003e，则升序序列和降序序列将分别使用默认值 1 和该数据类型的最小值。如果两种选项都未指定，则保留当前最小值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan\u003e\u003ccode\u003eNO MAXVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode\u003eMAXVALUE \u003cem\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e确定序列的最大值。如果指定了\u003ccode\u003eNO MAXVALUE\u003c/code\u003e，则升序序列和降序序列将分别使用该数据类型的最大值和默认值 -1。如果两种选项都未指定，则保留当前最大值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eCYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选关键字\u003ccode\u003eCYCLE\u003c/code\u003e可用于让序列在升序序列达到\u003cem\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e、或降序序列达到\u003cem\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e时回绕。达到限制后，下一个生成的数字将分别是\u003cem\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e或 \u003cem\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eNO CYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果指定了可选关键字\u003ccode\u003eNO CYCLE\u003c/code\u003e，则当序列达到其最大值后，任何对 \u003ccode\u003enextval\u003c/code\u003e的调用都会返回错误。如果既未指定\u003ccode\u003eCYCLE\u003c/code\u003e也未指定 \u003ccode\u003eNO CYCLE\u003c/code\u003e，则保留原有的循环行为。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode\u003eSTART WITH \u003cem\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e更改序列记录的起始值。这不会影响\u003cspan\u003e\u003cem\u003e当前\u003c/em\u003e\u003c/span\u003e序列值；它只是设置未来\u003ccode\u003eALTER SEQUENCE RESTART\u003c/code\u003e命令将使用的值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode\u003eRESTART [ WITH \u003cem\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e ]\u003c/code\u003e更改序列的当前值。这类似于以\u003ccode\u003eis_called\u003c/code\u003e = \u003ccode\u003efalse\u003c/code\u003e调用\u003ccode\u003esetval\u003c/code\u003e函数：指定的值会由对\u003ccode\u003enextval\u003c/code\u003e的\u003cspan\u003e\u003cem\u003e下一次\u003c/em\u003e\u003c/span\u003e调用返回。写成不带\u003cem\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e值的\u003ccode\u003eRESTART\u003c/code\u003e，等价于提供由\u003ccode\u003eCREATE SEQUENCE\u003c/code\u003e记录、或最近由\u003ccode\u003eALTER SEQUENCE START WITH\u003c/code\u003e设置的起始值。\u003c/p\u003e\u003cp\u003e与\u003ccode\u003esetval\u003c/code\u003e调用相比，对序列执行\u003ccode\u003eRESTART\u003c/code\u003e操作具有事务性，并且会阻止并发事务从同一序列中获取数字。如果这不是所期望的操作模式，则应使用\u003ccode\u003esetval\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e子句\u003ccode\u003eCACHE \u003cem\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e允许预分配序列号并将其存储在内存中，以便更快访问。最小值为 1（一次只能生成一个值，也就是不使用缓存）。如果未指定，则保留原有的缓存值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eSET { LOGGED | UNLOGGED }\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e这种形式将序列从不记录 WAL 改为记录 WAL，或反之亦然（见\u003ca href=\"/docs/18/sql-createsequence.html\" title=\"CREATE SEQUENCE\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e）。它不能应用于临时序列。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eOWNED BY\u003c/code\u003e \u003cem\u003e\u003ccode\u003etable_name\u003c/code\u003e\u003c/em\u003e.\u003cem\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan\u003e\u003ccode\u003eOWNED BY NONE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e\u003ccode\u003eOWNED BY\u003c/code\u003e选项使该序列与某个特定表列关联起来，这样如果该列（或其整张表）被删除，该序列也会自动删除。如果指定了该关联，它会替换该序列此前指定的任何关联。指定的表必须与该序列具有相同的拥有者，并且位于同一模式中。指定\u003ccode\u003eOWNED BY NONE\u003c/code\u003e 会移除任何现有关联，使该序列成为\u003cspan\u003e“\u003cspan\u003e独立的\u003c/span\u003e”\u003c/span\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新拥有者的用户名。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新模式。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e注解\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e不会立即影响除当前后端之外、已经预分配（缓存）了序列值的其他后端中的 \u003ccode\u003enextval\u003c/code\u003e结果。它们会先用完所有缓存值，然后才会注意到序列生成参数已经改变。当前后端则会立即受到影响。\u003c/p\u003e\u003cp\u003e\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e不会影响该序列的\u003ccode\u003ecurrval\u003c/code\u003e状态。（在\u003cspan\u003ePostgreSQL\u003c/span\u003e 8.3 之前，它有时会这样做。）\u003c/p\u003e\u003cp\u003e\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e会阻塞并发的\u003ccode\u003enextval\u003c/code\u003e、\u003ccode\u003ecurrval\u003c/code\u003e、\u003ccode\u003elastval\u003c/code\u003e和\u003ccode\u003esetval\u003c/code\u003e调用。\u003c/p\u003e\u003cp\u003e由于历史原因，序列也可以使用\u003ccode\u003eALTER TABLE\u003c/code\u003e；但允许用于序列的 \u003ccode\u003eALTER TABLE\u003c/code\u003e变体仅限于与上述形式等价的那些。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e示例\u003c/h2\u003e\u003cp\u003e将一个名为\u003ccode\u003eserial\u003c/code\u003e的序列重启到 105：\u003c/p\u003e\u003cpre\u003eALTER SEQUENCE serial RESTART WITH 105;\n\u003c/pre\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e兼容性\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER SEQUENCE\u003c/code\u003e符合\u003cacronym\u003eSQL\u003c/acronym\u003e标准，但 \u003ccode\u003eAS\u003c/code\u003e、\u003ccode\u003eSTART WITH\u003c/code\u003e、\u003ccode\u003eOWNED BY\u003c/code\u003e、\u003ccode\u003eOWNER TO\u003c/code\u003e、\u003ccode\u003eRENAME TO\u003c/code\u003e和 \u003ccode\u003eSET SCHEMA\u003c/code\u003e子句是\u003cspan\u003ePostgreSQL\u003c/span\u003e扩展。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e另见\u003c/h2\u003e\u003cspan\u003e\u003ca href=\"/wiki/sql/create-sequence/?v=18\" title=\"CREATE SEQUENCE\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-sequence/?v=18\" title=\"DROP SEQUENCE\" rel=\"nofollow\"\u003e\u003cspan\u003eDROP SEQUENCE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e\u003c/section\u003e","SourceRevision":"1b5ca64c","ContentHash":"b098753faffce9cccfa9fb262bf709c252dc50f89e2bd47f94daea9811faef40","Payload":{"purpose_zh":"更改序列发生器的定义","sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e更改现有序列发生器的参数。在 \u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e命令中未明确设置的参数，会保留其原有设置。\u003c/p\u003e\u003cp\u003e要使用\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e，你必须拥有该序列。要更改序列所在的模式，你还必须在新模式上具有\u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e，并且该角色必须在该序列所在模式上具有\u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e权限。（这些限制确保更改拥有者不会做出任何你不能通过删除并重建该序列来完成的事情。不过，超级用户无论如何都可以更改任何序列的所有权。）\u003c/p\u003e","key":"description","title":"描述"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e要更改的序列名称（可以是模式限定的）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果该序列不存在，则不要抛出错误。这种情况下会发出一条提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode class=\"literal\"\u003eAS \u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e 更改序列的数据类型。有效类型是 \u003ccode class=\"literal\"\u003esmallint\u003c/code\u003e、\u003ccode class=\"literal\"\u003einteger\u003c/code\u003e和 \u003ccode class=\"literal\"\u003ebigint\u003c/code\u003e。\u003c/p\u003e\u003cp\u003e当且仅当此前的最小值和最大值就是旧数据类型的最小值或最大值时，更改数据类型才会自动更改序列的最小值和最大值（换句话说，如果该序列在创建时隐式或显式使用了\u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e或\u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e）。否则，最小值和最大值会被保留，除非在同一条命令中给出了新值。如果最小值和最大值无法适配新数据类型，则会产生错误。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e子句\u003ccode class=\"literal\"\u003eINCREMENT BY \u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e是可选的。正值使序列递增，负值使序列递减。如果未指定，则保留原有的增量值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode class=\"literal\"\u003eMINVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e确定序列可生成的最小值。如果指定了\u003ccode class=\"literal\"\u003eNO MINVALUE\u003c/code\u003e，则升序序列和降序序列将分别使用默认值 1 和该数据类型的最小值。如果两种选项都未指定，则保留当前最小值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode class=\"literal\"\u003eMAXVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e确定序列的最大值。如果指定了\u003ccode class=\"literal\"\u003eNO MAXVALUE\u003c/code\u003e，则升序序列和降序序列将分别使用该数据类型的最大值和默认值 -1。如果两种选项都未指定，则保留当前最大值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选关键字\u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e可用于让序列在升序序列达到\u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e、或降序序列达到\u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e时回绕。达到限制后，下一个生成的数字将分别是\u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e或 \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果指定了可选关键字\u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e，则当序列达到其最大值后，任何对 \u003ccode class=\"function\"\u003enextval\u003c/code\u003e的调用都会返回错误。如果既未指定\u003ccode class=\"literal\"\u003eCYCLE\u003c/code\u003e也未指定 \u003ccode class=\"literal\"\u003eNO CYCLE\u003c/code\u003e，则保留原有的循环行为。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode class=\"literal\"\u003eSTART WITH \u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e更改序列记录的起始值。这不会影响\u003cspan class=\"emphasis\"\u003e\u003cem\u003e当前\u003c/em\u003e\u003c/span\u003e序列值；它只是设置未来\u003ccode class=\"command\"\u003eALTER SEQUENCE RESTART\u003c/code\u003e命令将使用的值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e可选子句\u003ccode class=\"literal\"\u003eRESTART [ WITH \u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e ]\u003c/code\u003e更改序列的当前值。这类似于以\u003ccode class=\"literal\"\u003eis_called\u003c/code\u003e = \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e调用\u003ccode class=\"function\"\u003esetval\u003c/code\u003e函数：指定的值会由对\u003ccode class=\"function\"\u003enextval\u003c/code\u003e的\u003cspan class=\"emphasis\"\u003e\u003cem\u003e下一次\u003c/em\u003e\u003c/span\u003e调用返回。写成不带\u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e值的\u003ccode class=\"literal\"\u003eRESTART\u003c/code\u003e，等价于提供由\u003ccode class=\"command\"\u003eCREATE SEQUENCE\u003c/code\u003e记录、或最近由\u003ccode class=\"command\"\u003eALTER SEQUENCE START WITH\u003c/code\u003e设置的起始值。\u003c/p\u003e\u003cp\u003e与\u003ccode class=\"function\"\u003esetval\u003c/code\u003e调用相比，对序列执行\u003ccode class=\"literal\"\u003eRESTART\u003c/code\u003e操作具有事务性，并且会阻止并发事务从同一序列中获取数字。如果这不是所期望的操作模式，则应使用\u003ccode class=\"function\"\u003esetval\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e子句\u003ccode class=\"literal\"\u003eCACHE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e允许预分配序列号并将其存储在内存中，以便更快访问。最小值为 1（一次只能生成一个值，也就是不使用缓存）。如果未指定，则保留原有的缓存值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET { LOGGED | UNLOGGED }\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e这种形式将序列从不记录 WAL 改为记录 WAL，或反之亦然（见\u003ca href=\"/docs/18/sql-createsequence.html\" title=\"CREATE SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e）。它不能应用于临时序列。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e \u003cem class=\"replaceable\"\u003e\u003ccode\u003etable_name\u003c/code\u003e\u003c/em\u003e.\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eOWNED BY NONE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e\u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e选项使该序列与某个特定表列关联起来，这样如果该列（或其整张表）被删除，该序列也会自动删除。如果指定了该关联，它会替换该序列此前指定的任何关联。指定的表必须与该序列具有相同的拥有者，并且位于同一模式中。指定\u003ccode class=\"literal\"\u003eOWNED BY NONE\u003c/code\u003e 会移除任何现有关联，使该序列成为\u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003e独立的\u003c/span\u003e”\u003c/span\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新拥有者的用户名。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该序列的新模式。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"参数"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e不会立即影响除当前后端之外、已经预分配（缓存）了序列值的其他后端中的 \u003ccode class=\"function\"\u003enextval\u003c/code\u003e结果。它们会先用完所有缓存值，然后才会注意到序列生成参数已经改变。当前后端则会立即受到影响。\u003c/p\u003e\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e不会影响该序列的\u003ccode class=\"function\"\u003ecurrval\u003c/code\u003e状态。（在\u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e 8.3 之前，它有时会这样做。）\u003c/p\u003e\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e会阻塞并发的\u003ccode class=\"function\"\u003enextval\u003c/code\u003e、\u003ccode class=\"function\"\u003ecurrval\u003c/code\u003e、\u003ccode class=\"function\"\u003elastval\u003c/code\u003e和\u003ccode class=\"command\"\u003esetval\u003c/code\u003e调用。\u003c/p\u003e\u003cp\u003e由于历史原因，序列也可以使用\u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e；但允许用于序列的 \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e变体仅限于与上述形式等价的那些。\u003c/p\u003e","key":"notes","title":"注解"},{"html":"\u003cp\u003e将一个名为\u003ccode class=\"literal\"\u003eserial\u003c/code\u003e的序列重启到 105：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER SEQUENCE serial RESTART WITH 105;\n\u003c/pre\u003e","key":"examples","title":"示例"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER SEQUENCE\u003c/code\u003e符合\u003cacronym\u003eSQL\u003c/acronym\u003e标准，但 \u003ccode class=\"literal\"\u003eAS\u003c/code\u003e、\u003ccode class=\"literal\"\u003eSTART WITH\u003c/code\u003e、\u003ccode class=\"literal\"\u003eOWNED BY\u003c/code\u003e、\u003ccode class=\"literal\"\u003eOWNER TO\u003c/code\u003e、\u003ccode class=\"literal\"\u003eRENAME TO\u003c/code\u003e和 \u003ccode class=\"literal\"\u003eSET SCHEMA\u003c/code\u003e子句是\u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e扩展。\u003c/p\u003e","key":"compatibility","title":"兼容性"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-sequence/?v=18\" title=\"CREATE SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE SEQUENCE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-sequence/?v=18\" title=\"DROP SEQUENCE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP SEQUENCE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"另见"}],"sections_same_as":"","synopsis_html":"ALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\n    [ AS \u003cem class=\"replaceable\"\u003e\u003ccode\u003edata_type\u003c/code\u003e\u003c/em\u003e ]\n    [ INCREMENT [ BY ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eincrement\u003c/code\u003e\u003c/em\u003e ]\n    [ MINVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003eminvalue\u003c/code\u003e\u003c/em\u003e | NO MINVALUE ] [ MAXVALUE \u003cem class=\"replaceable\"\u003e\u003ccode\u003emaxvalue\u003c/code\u003e\u003c/em\u003e | NO MAXVALUE ]\n    [ [ NO ] CYCLE ]\n    [ START [ WITH ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003estart\u003c/code\u003e\u003c/em\u003e ]\n    [ RESTART [ [ WITH ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erestart\u003c/code\u003e\u003c/em\u003e ] ]\n    [ CACHE \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/em\u003e ]\n    [ OWNED BY { \u003cem class=\"replaceable\"\u003e\u003ccode\u003etable_name\u003c/code\u003e\u003c/em\u003e.\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER SEQUENCE [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e","synopsis_text":"ALTER SEQUENCE [ IF EXISTS ] name\n[ AS data_type ]\n[ INCREMENT [ BY ] increment ]\n[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n[ [ NO ] CYCLE ]\n[ START [ WITH ] start ]\n[ RESTART [ [ WITH ] restart ] ]\n[ CACHE cache ]\n[ OWNED BY { table_name.column_name | NONE } ]\nALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }\nALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name\nALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
