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