9.16. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми
Ð ÑÑом Ñазделе опиÑÐ°Ð½Ñ ÑÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð±ÑекÑами, пÑедÑÑавлÑÑÑими поÑледоваÑелÑноÑÑи. Такие обÑекÑÑ (Ñакже назÑваемÑми генеÑаÑоÑами поÑледоваÑелÑноÑÑей или пÑоÑÑо поÑледоваÑелÑноÑÑÑми) ÑвлÑÑÑÑÑ ÑпеÑиалÑнÑми ÑаблиÑами из одной ÑÑÑоки и ÑоздаÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ CREATE SEQUENCE. ÐÑполÑзÑÑÑÑÑ Ð¾Ð½Ð¸ обÑÑно Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑникалÑнÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑÑок ÑаблиÑÑ. ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.50, пÑедоÑÑавлÑÑÑ Ð¿ÑоÑÑÑе и безопаÑнÑе Ð´Ð»Ñ Ð¿Ð°ÑаллелÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑÐ¾Ð´Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¾ÑеÑеднÑÑ Ð·Ð½Ð°Ñений ÑÐ°ÐºÐ¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей.
ТаблиÑа 9.50. ФÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| bigint | ÐÑдаÑÑ Ð·Ð½Ð°Ñение заданной поÑледоваÑелÑноÑÑи, коÑоÑое бÑло возвÑаÑено пÑи поÑледнем вÑзове ÑÑнкÑии nextval |
| bigint | ÐÑдаÑÑ Ð·Ð½Ð°Ñение лÑбой поÑледоваÑелÑноÑÑи, коÑоÑое бÑло возвÑаÑено пÑи поÑледнем вÑзове ÑÑнкÑии nextval |
| bigint | ÐÑÐ¾Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ðº ÑледÑÑÑÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ |
| bigint | УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑекÑÑее знаÑение поÑледоваÑелÑноÑÑи |
| bigint | УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑекÑÑее знаÑение поÑледоваÑелÑноÑÑи и Ñлаг is_called, ÑказÑваÑÑий на Ñо, ÑÑо ÑÑо знаÑение иÑполÑзовалоÑÑ |
ÐоÑледоваÑелÑноÑÑÑ, к коÑоÑой бÑÐ´ÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ð¾Ð´Ð½Ð° из ÑÑиÑ
ÑÑнкÑий, опÑеделÑеÑÑÑ Ð°ÑгÑменÑом regclass, задаÑÑим пÑоÑÑо OID поÑледоваÑелÑноÑÑи в ÑиÑÑемном каÑалоге pg_class. ÐÑÑиÑлÑÑÑ ÑÑÐ¾Ñ OID вÑÑÑнÑÑ Ð½Ðµ нÑжно, Ñак как пÑоÑедÑÑа ввода даннÑÑ
regclass авÑомаÑиÑеÑки вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ ÑÑÑ ÑабоÑÑ Ð·Ð° ваÑ. ÐÑоÑÑо запиÑиÑе Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи в апоÑÑÑоÑаÑ
, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¾ вÑглÑдело как ÑÑÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð½ÑÑанÑа. ÐÐ»Ñ ÑовмеÑÑимоÑÑи Ñ Ð¾Ð±ÑÑнÑми именами SQL ÑÑа ÑÑÑока бÑÐ´ÐµÑ Ð¿ÐµÑеведена в нижний ÑегиÑÑÑ, еÑли ÑолÑко она не заклÑÑена в кавÑÑки. ÐапÑимеÑ:
nextval('foo') обÑаÑаеÑÑÑ Ðº поÑледоваÑелÑноÑÑи foo
nextval('FOO') обÑаÑаеÑÑÑ Ðº поÑледоваÑелÑноÑÑи foo
nextval('"Foo"') обÑаÑаеÑÑÑ Ðº поÑледоваÑелÑноÑÑи FooÐÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи можно дополниÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑ ÐµÐ¼Ñ:
nextval('myschema.foo') обÑаÑаеÑÑÑ Ðº myschema.foo
nextval('"myschema".foo') Ñо же Ñамое
nextval('foo') иÑÐµÑ foo в пÑÑи поиÑка ÐодÑобнее Ñип regclass опиÑан в Разделе 8.19.
ÐÑимеÑание
Ð PostgreSQL до веÑÑии 8.1 аÑгÑменÑÑ ÑÑиÑ
ÑÑнкÑий имели Ñип text, а не regclass, и поÑÑÐ¾Ð¼Ñ Ð¾Ð¿Ð¸Ñанное вÑÑе пÑеобÑазование ÑекÑÑовой ÑÑÑоки в OID имело меÑÑо пÑи каждом вÑзове ÑÑнкÑии. ÐÑо поведение ÑоÑ
ÑанÑеÑÑÑ Ð¸ ÑейÑÐ°Ñ Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи, но ÑейÑÐ°Ñ Ð¾Ð½Ð¾ Ñеализовано как неÑвное пÑиведение Ñипа text к ÑÐ¸Ð¿Ñ regclass пеÑед вÑзовом ÑÑнкÑии.
Ðогда Ð²Ñ Ð·Ð°Ð¿Ð¸ÑÑваеÑе аÑгÑÐ¼ÐµÐ½Ñ ÑÑнкÑии, ÑабоÑаÑÑей Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑÑ, как ÑекÑÑовÑÑ ÑÑÑÐ¾ÐºÑ Ð² ÑиÑÑом виде, она ÑÑановиÑÑÑ ÐºÐ¾Ð½ÑÑанÑой Ñипа regclass. Так как ÑакÑиÑеÑки ÑÑо бÑÐ´ÐµÑ Ð¿ÑоÑÑо знаÑение OID, оно бÑÐ´ÐµÑ Ð¿ÑивÑзано к изнаÑалÑно иденÑиÑиÑиÑованной поÑледоваÑелÑноÑÑи, неÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо она Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑеименована, пеÑенеÑена в дÑÑгÑÑ ÑÑ
ÐµÐ¼Ñ Ð¸ Ñ. д. Такое «Ñаннее ÑвÑзÑвание» обÑÑно желаÑелÑно Ð´Ð»Ñ ÑÑÑлок на поÑледоваÑелÑноÑÑи в знаÑениÑÑ
ÑÑолбÑов по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ пÑедÑÑавлениÑÑ
. Ðо иногда Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ Ð² «позднем ÑвÑзÑвании», когда ÑÑÑлки на поÑледоваÑелÑноÑÑи ÑаÑпознаÑÑÑÑ Ð² пÑоÑеÑÑе вÑполнениÑ. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ñакое поведение, нÑжно пÑинÑдиÑелÑно измениÑÑ Ñип конÑÑанÑÑ Ñ regclass на text:
nextval('foo'::text) foo ÑаÑпознаÑÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑполнениÑÐамеÑÑÑе, ÑÑо веÑÑии PostgreSQL до 8.1 поддеÑживали ÑолÑко позднее ÑвÑзÑвание, Ñак ÑÑо ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ и Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñо ÑÑаÑÑми пÑиложениÑми.
ÐонеÑно же, аÑгÑменÑом ÑÐ°ÐºÐ¸Ñ ÑÑнкÑий Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ ÑолÑко конÑÑанÑа, но и вÑÑажение. ÐÑли ÑÑо вÑÑажение ÑекÑÑового Ñипа, неÑвное пÑиведение Ñипов повлеÑÑÑ ÑазÑеÑение имени во вÑÐµÐ¼Ñ Ð²ÑполнениÑ.
Ðиже опиÑÐ°Ð½Ñ Ð²Ñе ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми:
nextvalÐÑÐ¾Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ðº ÑледÑÑÑÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾. ÐÑо аÑомаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑиÑ: еÑли
nextvalвÑзÑваеÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно в неÑколÑÐºÐ¸Ñ ÑеанÑÐ°Ñ , в ÑезÑлÑÑаÑе каждого вÑзова бÑдÑÑ Ð³Ð°ÑанÑиÑованно полÑÑÐµÐ½Ñ ÑазнÑе знаÑениÑ.ÐÑли поÑледоваÑелÑноÑÑÑ ÑоздаÑÑÑÑ Ñ Ð¿Ð°ÑамеÑÑами по ÑмолÑаниÑ, ÑÑпеÑнÑе вÑзовÑ
nextvalполÑÑаÑÑ Ð¾ÑеÑеднÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ возÑаÑÑаниÑ, наÑÐ¸Ð½Ð°Ñ Ñ 1. ÐÑÑгое поведение можно полÑÑиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑпеÑиалÑнÑÑ Ð¿Ð°ÑамеÑÑов в команде CREATE SEQUENCE; подÑобнее ÑÑо опиÑано на ÑÑÑаниÑе опиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ.ÐÑой ÑÑнкÑии ÑÑебÑеÑÑÑ Ð¿Ñаво
USAGEилиUPDATEÐ´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи.currvalÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, вÑданное пÑи поÑледнем вÑзове
nextvalÐ´Ð»Ñ ÑÑой поÑледоваÑелÑноÑÑи в ÑекÑÑем ÑеанÑе. (ÐÑли в данном ÑеанÑеnextvalни ÑÐ°Ð·Ñ Ð½Ðµ вÑзÑвалаÑÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ поÑледоваÑелÑноÑÑи, возвÑаÑаеÑÑÑ Ð¾Ñибка.) Так как ÑÑо знаÑение огÑаниÑено Ñамками ÑеанÑа, ÑÑа ÑÑнкÑÐ¸Ñ Ð²ÑдаÑÑ Ð¿ÑедÑказÑемÑй ÑезÑлÑÑÐ°Ñ Ð²Ð½Ðµ завиÑимоÑÑи Ð¾Ñ Ñого, вÑзвалаÑÑ Ð»Ð¸ впоÑледÑÑвииnextvalв дÑÑÐ³Ð¸Ñ ÑеанÑÐ°Ñ Ð¸Ð»Ð¸ неÑ.ÐÑой ÑÑнкÑии ÑÑебÑеÑÑÑ Ð¿Ñаво
USAGEилиSELECTÐ´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи.lastvalÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, вÑданное пÑи поÑледнем вÑзове
nextvalв ÑекÑÑем ÑеанÑе. ÐÑа ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°currval, но она не пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² паÑамеÑÑÐ°Ñ Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, а обÑаÑаеÑÑÑ Ðº Ñой поÑледоваÑелÑноÑÑи, Ð´Ð»Ñ ÐºÐ¾ÑоÑой вÑзÑвалаÑÑnextvalв поÑледний Ñаз в ÑекÑÑем ÑеанÑе. ÐÑли в ÑекÑÑем ÑеанÑе ÑÑнкÑиÑnextvalеÑÑ Ð½Ðµ вÑзÑвалаÑÑ, пÑи вÑзовеlastvalпÑоизойдÑÑ Ð¾Ñибка.ÐÑой ÑÑнкÑии ÑÑебÑеÑÑÑ Ð¿Ñаво
USAGEилиSELECTÐ´Ð»Ñ Ð¿Ð¾Ñледней иÑполÑзованной поÑледоваÑелÑноÑÑи.setvalСбÑаÑÑÐ²Ð°ÐµÑ ÑÑÑÑÑик поÑледоваÑелÑноÑÑи. Ð ÑоÑме Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð°ÑамеÑÑами ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи заданное знаÑение полÑ
last_valueи знаÑениеtrueÐ´Ð»Ñ Ñлагаis_called, показÑваÑÑего, ÑÑо пÑи ÑледÑÑÑем вÑзовеnextvalпоÑледоваÑелÑноÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑнаÑала пÑодвинÑÑÑÑÑ Ðº оÑеÑÐµÐ´Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ, коÑоÑое бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑено. ÐÑи ÑÑомcurrvalÑакже возвÑаÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ знаÑение. Ð ÑоÑме Ñ ÑÑÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑами ÑлагÑis_calledможно пÑиÑвоиÑÑtrueилиfalse. Со знаÑениемtrueона дейÑÑвÑÐµÑ Ñак же, как и ÑоÑма Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð°ÑамеÑÑами. ÐÑли же пÑиÑвоиÑÑ ÑÑÐ¾Ð¼Ñ ÑÐ»Ð°Ð³Ñ Ð·Ð½Ð°Ñениеfalse, пеÑвÑй вÑзовnextvalпоÑле ÑÑого веÑнÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ заданное знаÑение, а пÑодвижение поÑледоваÑелÑноÑÑи пÑоизойдÑÑ Ð¿Ñи поÑледÑÑÑем вÑзовеnextval. ÐÑоме Ñого, знаÑение, возвÑаÑаемоеcurrvalв ÑÑом ÑлÑÑае, не менÑеÑÑÑ. ÐапÑимеÑ,SELECT setval('foo', 42); СледÑÑÑий вÑзовnextvalвеÑнÑÑ 43 SELECT setval('foo', 42, true); То же Ñамое SELECT setval('foo', 42, false); СледÑÑÑий вÑзовnextvalвеÑнÑÑ 42РезÑлÑÑаÑом Ñамой ÑÑнкÑии
setvalбÑÐ´ÐµÑ Ð¿ÑоÑÑо знаÑение ÐµÑ Ð²ÑоÑого аÑгÑменÑа.ÐÑой ÑÑнкÑии ÑÑебÑеÑÑÑ Ð¿Ñаво
UPDATEÐ´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи.
Ðнимание
Ðо избежание блокиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑаллелÑнÑÑ
ÑÑанзакÑий, пÑÑаÑÑиÑ
ÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ поÑледоваÑелÑноÑÑи, знаÑение, вÑданное ÑÑнкÑией nextval, не вÑÑвобождаеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑзованиÑ, еÑли вÑзÑваÑÑÐ°Ñ ÑÑанзакÑÐ¸Ñ Ð²Ð¿Ð¾ÑледÑÑвии пÑеÑÑваеÑÑÑ. ÐÑо ознаÑаеÑ, ÑÑо в ÑлÑÑае Ñбоев Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
или пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑанзакÑий в поÑледоваÑелÑноÑÑи задейÑÑвованнÑÑ
знаÑений могÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ Ð¿ÑопÑÑки. ÐÑопÑÑки могÑÑ Ð¿Ð¾ÑвиÑÑÑÑ Ð¸ без пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑанзакÑии. ÐапÑимеÑ, команда INSERT Ñ Ð¿Ñедложением ON CONFLICT вÑÑиÑÐ»Ð¸Ñ ÐºÐ¾ÑÑеж, пÑеÑендÑÑÑий на добавление, пÑÐ¾Ð¸Ð·Ð²ÐµÐ´Ñ Ð²Ñе ÑÑебÑемÑе вÑÐ·Ð¾Ð²Ñ nextval, пÑежде Ñем вÑÑÐ²Ð¸Ñ ÐºÐ¾Ð½ÑликÑÑ, коÑоÑÑе могÑÑ Ð¿ÑивеÑÑи к оÑÑабоÑке пÑавил ON CONFLICT вмеÑÑо добавлениÑ. Таким обÑазом, обÑекÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей Postgres Pro не годÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¿ÑеÑÑвнÑÑ
поÑледоваÑелÑноÑÑей.
Ð Ñом же клÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, пÑоизведÑннÑе ÑÑнкÑией setval, ÑÑÐ°Ð·Ñ Ð¶Ðµ ÑÑановÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñми Ð´Ð»Ñ Ð´ÑÑгиÑ
ÑÑанзакÑий и не оÑменÑÑÑÑÑ Ð¿Ñи оÑкаÑе ÑÑанзакÑии, вÑзвавÑей ÑÑÑ ÑÑнкÑиÑ.
ÐÑли клаÑÑÐµÑ Ð±Ð°Ð·Ñ Ð¿ÑеÑÑÐ²Ð°ÐµÑ ÑабоÑÑ Ð´Ð¾ ÑикÑаÑии ÑÑанзакÑии, ÑодеÑжаÑей вÑзов ÑÑнкÑии nextval или setval, изменение ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ попаÑÑÑ Ð² поÑÑоÑнное Ñ
ÑанилиÑе, поÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑно, какое ÑоÑÑоÑние бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð¿Ð¾Ñле пеÑезапÑÑка клаÑÑеÑа: иÑÑ
одное или изменÑнное. ÐÑо не ÑоздаÑÑ Ð¿Ñоблем пÑи иÑполÑзовании поÑледоваÑелÑноÑÑи внÑÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, Ñак как дÑÑгие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ·Ð°ÑикÑиÑованнÑÑ
ÑÑанзакÑий Ñакже не бÑдÑÑ Ð²Ð¸Ð´Ð½Ñ. Ðднако еÑли знаÑение поÑледоваÑелÑноÑÑи бÑÐ´ÐµÑ ÑоÑ
ÑанÑÑÑÑÑ Ð¸ иÑполÑзоваÑÑÑÑ Ð²Ð½Ðµ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑледÑÐµÑ Ð¿ÑедваÑиÑелÑно ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо вÑзов ÑÑнкÑии nextval ÑÑпеÑно заÑикÑиÑован.