ALTER SEQUENCE
ALTER SEQUENCE â измениÑÑ Ð¾Ð¿Ñеделение генеÑаÑоÑа поÑледоваÑелÑноÑÑи
СинÑакÑиÑ
ALTER SEQUENCE [ IF EXISTS ]имÑ[ INCREMENT [ BY ]Ñаг] [ MINVALUEмин_знаÑение| NO MINVALUE ] [ MAXVALUEмакÑ_знаÑение| NO MAXVALUE ] [ START [ WITH ]наÑало] [ RESTART [ [ WITH ]пеÑезапÑÑк] ] [ CACHEкеÑ] [ [ NO ] CYCLE ] [ OWNED BY {имÑ_ÑаблиÑÑ.имÑ_ÑÑолбÑа| NONE } ] ALTER SEQUENCE [ IF EXISTS ]имÑOWNER TO {новÑй_владелеÑ| CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ]имÑRENAME TOновое_имÑALTER SEQUENCE [ IF EXISTS ]имÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°
ÐпиÑание
ALTER SEQUENCE менÑÐµÑ Ð¿Ð°ÑамеÑÑÑ ÑÑÑеÑÑвÑÑÑего генеÑаÑоÑа поÑледоваÑелÑноÑÑи. ÐаÑамеÑÑÑ, не опÑеделÑемÑе Ñвно в команде ALTER SEQUENCE, ÑоÑ
ÑанÑÑÑ Ñвои пÑедÑдÑÑие знаÑениÑ.
ÐÑполниÑÑ ALTER SEQUENCE Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑей поÑледоваÑелÑноÑÑи. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме поÑледоваÑелÑноÑÑи. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа поÑледоваÑелÑноÑÑи в лÑбом ÑлÑÑае.)
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) поÑледоваÑелÑноÑÑи, подлежаÑей изменениÑ.
IF EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли поÑледоваÑелÑноÑÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание.
ÑагÐÑедложение
INCREMENT BYÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм. ÐÑи положиÑелÑном знаÑении Ñага генеÑиÑÑеÑÑÑ Ð²Ð¾Ð·ÑаÑÑаÑÑÐ°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, пÑи оÑÑиÑаÑелÑном ÂÂÂâ ÑбÑваÑÑаÑ; еÑли Ñаг не Ñказан, ÑÐ¾Ñ ÑанÑеÑÑÑ Ð¿ÑедÑдÑÑее знаÑение.Ñагмин_знаÑениеNO MINVALUEÐеобÑзаÑелÑное пÑедложение
MINVALUEопÑеделÑÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное знаÑение, коÑоÑое бÑÐ´ÐµÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ. ÐÑли Ñказаномин_знаÑениеNO MINVALUE, Ð´Ð»Ñ Ð²Ð¾Ð·ÑаÑÑаÑÑей поÑледоваÑелÑноÑÑи ÑÑим знаÑением бÑÐ´ÐµÑ 1, а Ð´Ð»Ñ ÑбÑваÑÑей â -263-1. РоÑÑÑÑÑÑвие ÑÑÐ¸Ñ Ñказаний бÑÐ´ÐµÑ ÑÐ¾Ñ Ñанено ÑекÑÑее минималÑное знаÑение.макÑ_знаÑениеNO MAXVALUEÐеобÑзаÑелÑное пÑедложение
MAXVALUEопÑеделÑÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение, коÑоÑое бÑÐ´ÐµÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ. ÐÑли ÑказаномакÑ_знаÑениеNO MAXVALUE, Ð´Ð»Ñ Ð²Ð¾Ð·ÑаÑÑаÑÑей поÑледоваÑелÑноÑÑи ÑÑим знаÑением бÑÐ´ÐµÑ 263-1, а Ð´Ð»Ñ ÑбÑваÑÑей â -1. РоÑÑÑÑÑÑвие ÑÑÐ¸Ñ Ñказаний бÑÐ´ÐµÑ ÑÐ¾Ñ Ñанено ÑекÑÑее макÑималÑное знаÑение.наÑалоÐеобÑзаÑелÑное пÑедложение
START WITHменÑÐµÑ Ð·Ð°Ð¿Ð¸Ñанное наÑалÑное знаÑение поÑледоваÑелÑноÑÑи. ÐÑи ÑÑом ÑекÑÑее знаÑение поÑледоваÑелÑноÑÑи не менÑеÑÑÑ, а ÑолÑко ÑÑÑанавливаеÑÑÑ Ð·Ð½Ð°Ñение, коÑоÑое бÑÐ´ÐµÑ Ð¿Ñименено бÑдÑÑими командаминаÑалоALTER SEQUENCE RESTART.пеÑезапÑÑкÐеобÑзаÑелÑное пÑедложение
RESTART [ WITHменÑÐµÑ ÑекÑÑее знаÑение поÑледоваÑелÑноÑÑи. Ðно ÑавнознаÑно вÑÐ·Ð¾Ð²Ñ ÑÑнкÑиипеÑезапÑÑк]setvalÑ Ð¿Ð°ÑамеÑÑомis_called=false: Ñказанное знаÑение пеÑезапÑÑка бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑено пÑи ÑледÑÑÑем вÑзове ÑÑнкÑииnextval. ÐÑÑÑÑÑÑвие вRESTARTзнаÑениÑпеÑезапÑÑкÑавноÑилÑно пеÑедаÑе ÑÑаÑÑового знаÑениÑ, запиÑанного командойCREATE SEQUENCEили поÑледнего ÑÑÑановленного командойALTER SEQUENCE START WITH.кеÑÐÑедложение
CACHEÑазÑеÑÐ°ÐµÑ Ð¿ÑедваÑиÑелÑно вÑделÑÑÑ Ð¸ ÑÐ¾Ñ ÑанÑÑÑ Ð² памÑÑи ÑиÑла поÑледоваÑелÑноÑÑи Ð´Ð»Ñ ÑÑкоÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа к ним. ÐинималÑное знаÑение Ñавно 1 (Ñ. е. за один Ñаз генеÑиÑÑеÑÑÑ ÑолÑко одно знаÑение, кеÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑ). ÐÑли ÑÑо пÑедложение оÑÑÑÑÑÑвÑеÑ, ÑÐ¾Ñ ÑанÑеÑÑÑ ÑÑаÑое знаÑение ÑазмеÑа кеÑа.кеÑCYCLEÐеобÑзаÑелÑное клÑÑевое Ñлово
CYCLEпозволÑÐµÑ Ð·Ð°ÑиклиÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð¿Ñи доÑÑижениимакÑ_знаÑениÑилимин_знаÑениÑÐ´Ð»Ñ Ð²Ð¾Ð·ÑаÑÑаÑÑей и ÑбÑваÑÑей поÑледоваÑелÑноÑÑи, ÑооÑвеÑÑÑвенно. Ðогда ÑÑÐ¾Ñ Ð¿Ñедел доÑÑигаеÑÑÑ, ÑледÑÑÑим ÑиÑлом ÑÑÐ¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей бÑÐ´ÐµÑ ÑооÑвеÑÑÑвенномин_знаÑениеилимакÑ_знаÑение.NO CYCLEÐÑли добавлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑное Ñказание
NO CYCLE, пÑи каждом вÑзовеnextvalпоÑле доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑеделÑного знаÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð¾Ñибка. ÐÑли же ÑказаниÑCYCLEиNO CYCLEоÑÑÑÑÑÑвÑÑÑ, ÑÐ¾Ñ ÑанÑеÑÑÑ Ð¿ÑедÑдÑÑее поведение заÑикливаниÑ.OWNED BYимÑ_ÑаблиÑÑ.имÑ_ÑÑолбÑаOWNED BY NONEУказание
OWNED BYÑвÑзÑÐ²Ð°ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ñ Ð¾Ð¿ÑеделÑннÑм ÑÑолбÑом ÑаблиÑÑ, Ñ Ñем ÑÑÐ¾Ð±Ñ Ð¿Ñи Ñдалении ÑÑого ÑÑолбÑа (или вÑей ÑаблиÑÑ) авÑомаÑиÑеÑки ÑдалилаÑÑ Ð¸ поÑледоваÑелÑноÑÑÑ. ÐÑо Ñказание заменÑÐµÑ Ð»ÑбÑÑ Ñанее ÑÑÑановленнÑÑ ÑвÑÐ·Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ поÑледоваÑелÑноÑÑи. Ð¦ÐµÐ»ÐµÐ²Ð°Ñ ÑаблиÑа должна имеÑÑ Ñого же владелÑÑа и Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² Ñой же ÑÑ ÐµÐ¼Ðµ, ÑÑо и поÑледоваÑелÑноÑÑÑ. УказаниеOWNED BY NONEÑбиÑÐ°ÐµÑ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑвÑзи, обознаÑÐ°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Â«Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой».новÑй_владелеÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем поÑледоваÑелÑноÑÑи.
новое_имÑÐовое Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° поÑледоваÑелÑноÑÑи.
ÐамеÑаниÑ
Ðо избежание блокиÑовки паÑаллелÑнÑÑ
ÑÑанзакÑий, полÑÑаÑÑиÑ
ÑиÑла из одной поÑледоваÑелÑноÑÑи, воздейÑÑвие ALTER SEQUENCE на паÑамеÑÑÑ Ð³ÐµÐ½ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи никогда не оÑменÑеÑÑÑ, ÑÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±ÑаÑÐ¸Ð¼Ñ Ð¸ вÑÑÑпаÑÑ Ð² ÑÐ¸Ð»Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾. Ðднако пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ OWNED BY, OWNER TO, RENAME TO и SET SCHEMA пÑиводÑÑ Ðº обÑÑнÑм изменениÑм каÑалога и могÑÑ Ð±ÑÑÑ Ð¾ÑÐ¼ÐµÐ½ÐµÐ½Ñ ÐºÐ°Ðº ÑаÑÑÑ ÑÑанзакÑии.
ALTER SEQUENCE не оказÑÐ²Ð°ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ влиÑÐ½Ð¸Ñ Ð½Ð° ÑезÑлÑÑаÑÑ nextval в ÑеÑвеÑнÑÑ
пÑоÑеÑÑаÑ
, кÑоме ÑекÑÑего, коÑоÑÑе могли пÑедваÑиÑелÑно ÑгенеÑиÑоваÑÑ (кеÑиÑоваÑÑ) знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи. ÐÑи пÑоÑеÑÑÑ Ð·Ð°Ð¼ÐµÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑолÑко поÑле Ñого, как бÑдÑÑ Ð¸Ð·ÑаÑÑ
Ð¾Ð´Ð¾Ð²Ð°Ð½Ñ Ð²Ñе кеÑиÑованнÑе знаÑениÑ. ТекÑÑий ÑеÑвеÑнÑй пÑоÑеÑÑ ÑеагиÑÑÐµÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑазÑ.
ALTER SEQUENCE не влиÑÐµÑ Ð½Ð° знаÑение currval поÑледоваÑелÑноÑÑи. (Ð PostgreSQL до веÑÑии 8.3 ÑÑо могло пÑоиÑÑ
одиÑÑ.)
Ðо иÑÑоÑиÑеÑким пÑиÑинам ALTER TABLE Ñоже Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми, но вÑе ÑазновидноÑÑи ALTER TABLE, допÑÑÑимÑе Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми, ÑавнознаÑÐ½Ñ Ð²ÑÑепеÑеÑиÑленнÑм ÑоÑмам.
ÐÑимеÑÑ
ÐеÑезапÑÑк поÑледоваÑелÑноÑÑи serial Ñ ÑиÑла 105:
ALTER SEQUENCE serial RESTART WITH 105;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ ALTER SEQUENCE ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ SQL, за иÑклÑÑением пÑедложений START WITH, OWNED BY, OWNER TO, RENAME TO и SET SCHEMA, ÑвлÑÑÑиÑ
ÑÑ ÑаÑÑиÑениÑми Postgres Pro.