[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-chto-takoe-posledovatelnosti-sequences-i-kak-oni-rabotayut":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},931,"chto-takoe-posledovatelnosti-sequences-i-kak-oni-rabotayut",28,"postgresql","PostgreSQL","🐘","Что такое последовательности (sequences) и как они работают?","Последовательность (sequence) — это специальный объект базы данных, генерирующий уникальные числовые значения в возрастающем (или убывающем) порядке. Последовательности часто используются для генерации первичных ключей.\n\n\u003Cdetails>\u003Csummary>Примеры работы с последовательностями\u003C\u002Fsummary>\n\n```sql\n-- Создание последовательности\nCREATE SEQUENCE order_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 20;\n\n-- Получение следующего значения\nSELECT nextval('order_id_seq');  -- 1\nSELECT nextval('order_id_seq');  -- 2\n\n-- Текущее значение (в текущей сессии, после вызова nextval)\nSELECT currval('order_id_seq');  -- 2\n\n-- Последнее присвоенное значение (глобально)\nSELECT last_value FROM order_id_seq;\n\n-- Использование в таблице\nCREATE TABLE orders (\n    id bigint DEFAULT nextval('order_id_seq') PRIMARY KEY,\n    description text\n);\n```\n\n\u003C\u002Fdetails>\n\n### Важные особенности\n\n- Последовательности работают **вне транзакций** — если транзакция откатывается, значение последовательности **не возвращается**. Поэтому в значениях могут быть пропуски (gaps), и это нормальное поведение\n- Параметр `CACHE` позволяет каждой сессии заранее резервировать блок значений, что повышает производительность при высоком конкурентном доступе\n- Последовательности гарантируют уникальность, но не гарантируют непрерывность\n\n```sql\n-- Сброс последовательности\nALTER SEQUENCE order_id_seq RESTART WITH 1;\n\n-- Привязка последовательности к столбцу\nALTER SEQUENCE order_id_seq OWNED BY orders.id;\n```\n\n> **На собеседовании:** типичный вопрос-ловушка — «почему в таблице пропуски в id?». Ответ: последовательности работают вне транзакций, откат транзакции не возвращает значение. Это by design, а не баг.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое последовательности (sequences) и как они работают? — Gymterview","Последовательность (sequence) — это специальный объект базы данных, генерирующий уникальные числовые значения в возрастающем (или убывающем) порядке. Последоват","Последовательность (sequence) — это специальный объект базы данных, генерирующий уникальные числовые значения в возраста",[7,13],"Последовательность (sequence) — это специальный объект базы данных, генерирующий уникальные числовые значения в возрастающем (или убывающем) порядке. Последовательности часто используются для генерации первичных ключей.",true]