Освен това, ако получите ситуация, която изисква да промените следващата стойност в последователността, можете бързо да нулирате последователността и да посочите с каква стойност да започнете за следващия запис в таблицата. Всички подробности, които трябва да знаете относно това как да нулирате последователност в 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 последователност.