Как да нулирате последователност в PostgreSQL

Kak Da Nulirate Posledovatelnost V Postgresql



Използването на PostgreSQL последователността е ефективен начин за работа с автоматично нарастваща стойност, особено за първични ключове. Когато началната стойност не е дефинирана, автоматичното нарастване за INT ще започне от 0. Можете обаче да посочите каква начална стойност да използвате за последователността във вашата колона за автоматично нарастване.

Освен това, ако получите ситуация, която изисква да промените следващата стойност в последователността, можете бързо да нулирате последователността и да посочите с каква стойност да започнете за следващия запис в таблицата. Всички подробности, които трябва да знаете относно това как да нулирате последователност в PostgreSQL, са описани подробно в тази публикация. Погледни!

Пример за това как да нулирате последователност в PostgreSQL

С колона INT можете да създадете последователност с автоматично нарастване и да я използвате като първичен ключ за вашата таблица. По този начин няма да е необходимо да въвеждате стойностите му, когато изпълнявате заявка INSERT, тъй като целочислените стойности ще се генерират автоматично. Когато последователността е създадена, командата ALTER SEQUENCE ви позволява да рестартирате последователността и да посочите нова начална стойност за новите записи.







За този пример ще работим със следната таблица „user_details“. Нашият фокус е колоната „user_id“, която е последователност с автоматично нарастване, започваща от 100.





За да изброите различните последователности във вашата база данни, изпълнете следната команда:





\ds

За нашия случай ние се насочваме към последователността „user_id“.



За да получите повече подробности за последователността, изпълнете заявката „избор“, както е показано по-долу:

SELECT * FROM име_на_последователност;

Можем да видим, че последната стойност в съществуващата последователност е 104. Нулираме тази стойност и дефинираме нова стойност, която ще имат новите записи.

За да нулирате последователността на PostgreSQL, използвайте следната команда:

ALTER SEQUENCE име на_последователност RESTART WITH стойност;

За нашия случай, да кажем, че искаме да рестартираме последователността и да започнем новите записи на 20. След като изпълним следната команда, получаваме изход, както е показано по-долу, който потвърждава, че последователността е била променена.

Ако изпълним отново по-ранната команда, за да получим подробностите за нашата последователност, използвайки оператора SELECT, можем да видим, че новата „last_value“ за този случай е стойността, която сме посочили с командата ALTER.

Нека вмъкнем нов запис в нашата таблица, за да видим какво ще се случи. Следващото изображение показва заявката INSERT и резултатите, които получаваме след изпълнение на оператора SELECT. Забележете как новият запис има „user_id“ зададен на 20. Всички нови записи, които правим, ще имат своя „user_id“, генериран въз основа на последната стойност, която е 20.

Ако направим друг вход, неговият „user_id“ ще бъде 21 и последователността ще продължи по същата логика. Ето как нулирате последователност в PostgreSQL. Обърнете внимание, че командата „нулиране“ не засяга съществуващите записи. Той само дефинира новата начална стойност за записите, които правите след нулиране на последователността.

Заключение

С PostgreSQL наличието на начин за автоматично генериране на целочислените стойности в колоната ви с първичен ключ опростява нещата. Когато имате съществуваща последователност, можете да използвате ALTER SEQUENCE
команда с опцията RESTART WITH, за да посочите коя последователност искате да нулирате и каква стойност да зададете като последна стойност в последователността. По този начин новите записи ще имат целочислена стойност, генерирана въз основа на новата последна стойност. Обърнете се към представения пример, за да разберете как работи нулирането на PostgreSQL последователност.