logo

Сериен PostgreSQL

В този раздел ще разберем работата на Сериен PostgreSQL псевдотип, който ни позволява да дефинираме колони с автоматично нарастване в таблици. И ние също виждаме примери от Псевдо тип PostgreSQL Serial .

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

В PostgreSQL имаме един конкретен вид генератор на обекти на база данни, известен като Сериен , който е свикнал да създайте поредица от цели числа които често се използват като Първичен ключ в таблица.

Последователността може да бъде генерирана с помощта на SERIAL псевдотип , докато създаваме нова таблица, както можем да видим в следната команда:

 CREATE TABLE table_name( ID SERIAL ); 

PostgreSQL прави следното, ако предоставим SERIAL псевдотип към документ за самоличност колона:

  • Първо, PostgreSQL ще създаде обект на последователност и след това ще установи следващата стойност, създадена от последователността, като предварително дефинирана стойност на конкретната колона.
  • След това PostgreSQL ще подобри a Ограничение NOT NULL към ID колона тъй като една последователност винаги произвежда цяло число, което е a ненулева стойност .
  • Най-накрая PostgreSQL ще предостави собственика на последователността на ID колона; като изход обектът на последователността се премахва, когато таблицата или ID колона е изпуснат.

Забележка: Можем да използваме и двете команди, за да посочим псевдотипа Serial, тъй като и двете команди по-долу са подобни една на друга.

 CREATE TABLE table_name( ID SERIAL ); 

 CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID; 

The Псевдо тип PostgreSQL Serial е класифициран в три вида, които са както следва:

    МАЛКОСЕРИЕН СЕРИЕН BIGSERIAL

Имаме следната таблица, която съдържа всички Сериен псевдотип спецификация, която се поддържа от PostgreSQL:

Име Размер за съхранение Обхват
МАЛКОСЕРИЕН 2 байта 1 до 32767
СЕРИЕН 4 байта 1 до 2147483647
BIGSERIAL 8 байта 1 до 9223372036854775807

Синтаксис на псевдотип PostgreSQL Serial

Синтаксисът на PostgreSQL Сериен псевдотип както следва:

 variable_name SERIAL 

Примери за тип PostgreSQL SERIAL

Нека видим различни примери, за да разберем как PostgreSQL Serial псевдотип работи .

Забележка: Можем да дефинираме ограничението PRIMARY KEY за колоната SERIAL, тъй като типът SERIAL не създава индиректно индекс на колоната или не прави колоната като колона с първичен ключ.

Създаваме една нова таблица с помощта на командата CREATE и вмъкваме някои стойности с помощта на командата INSERT.

В примера по-долу ние използваме СЪЗДАВАЙТЕ команда за генериране на a автомобили маса в База данни на организацията:

 CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL ); 

Изход

The автомобили таблицата е създадена успешно след изпълнение на горните команди, както е показано на екранната снимка по-долу:

Сериен PostgreSQL

Веднъж автомобили е генерирана таблица, можем да вмъкнем някои стойности в нея с помощта на командата INSERT. И можем да използваме ПО ПОДРАЗБИРАНЕ ключова дума в командата INSERT или пропуснете името на колоната (Car_id) .

 INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera'); 

Изход

След като изпълним горната команда, ще получим следното съобщение и стойността е вмъкната успешно в автомобили маса:

Сериен PostgreSQL

ИЛИ Използвайки Ключова дума ПО ПОДРАЗБИРАНЕ с името на колоната (Car_id):

 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Изход

При изпълнението на горната команда ще получим следното съобщение; стойността е вмъкната успешно в автомобили маса:

Сериен PostgreSQL

Както можем да видим на екранната снимка по-горе, PostgreSQL вмъкна два реда в автомобили маса с Car_id стойностите на колоните са 1 и 2 .

След създаване и вмъкване на автомобили стойности на таблицата, ще използваме ИЗБЕРЕТЕ командата връща всички редове на автомобили маса:

 SELECT * FROM Cars; 

Изход

След успешно изпълнение на горната команда ще получим следния резултат:

Сериен PostgreSQL

Можем да използваме pg_get_serial_sequence() функция за получаване на името на последователността на a СЕРИЕН колона в определена таблица, както можем да видим в синтаксиса по-долу:

 pg_get_serial_sequence('table_name','column_name') 

За да получите текуща стойност създадена от последователността, можем да предадем име на последователност към функцията currval().

В следващия пример използвахме currval() функция за връщане на текущата стойност, произведена от автомобили маса Car_id_seq обект:

 SELECT currval(pg_get_serial_sequence('Cars', 'car_id')); 

Изход

След като изпълним горната команда, ще получим изхода по-долу:

Сериен PostgreSQL

Можем да използваме ВРЪЩАНЕ Car_id клауза в командата INSERT, ако искаме да получим тези стойности, създадени от последователността, когато вмъкнем нов ред в таблицата.

Командата по-долу се използва за вмъкване на нов ред в автомобили таблица и връща тези записи, генерирани за Car_id колона.

 INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id; 

Изход

При изпълнение на горната команда ще получим следния изход, който връща Car_id като 3 :

Сериен PostgreSQL

Забележка:

  • Както разбрахме по-горе, генератор на последователности операцията не е безопасна за транзакция, което означава, че всеки потребител ще получи различна стойност ако има две паралелни бази данни връзките се опитват да получат следващата стойност от последователност.
  • И поредният номер на този потребител ще бъде неактивен и ще създаде празнина в поредицата if един потребител може да върне обратно транзакцията .

Пример2

Нека видим още един пример, за да научим Сериен псевдотип подробно.

И така, ще създадем друга нова таблица като a Зеленчуци таблица с помощта на командата CREATE в подобна база данни това е Организация с Veg_id колона като СЕРИЕН псевдотип.

 CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL ); 

Изход

The Зеленчуци таблицата е създадена успешно след изпълнение на горните команди, както е показано на екранната снимка по-долу:

Сериен PostgreSQL

Веднъж Зеленчуци е генерирана таблица, ще вмъкнем някои стойности в нея с помощта на командата INSERT и ще пропуснем Veggies_id колона, както е показано в командата по-долу:

 INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring'); 

Изход

Ще получим следното съобщение при изпълнение на горната команда: стойността е вмъкната успешно в Зеленчуци маса.

Сериен PostgreSQL

Или можем също да използваме По подразбиране ключова дума и използва Veggie_id колона, както е показано в следната команда:

 INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter'); 

Изход

След като изпълним горната команда, ще получим съобщението по-долу, което казва, че или можем да използваме Ключова дума по подразбиране или игнорирайте името на колоната , ще получим подобен резултат:

пример за java do while
Сериен PostgreSQL

Затова ще добавим още няколко стойности към автомобили таблица с помощта на следната команда:

 INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall'); 

Изход

След като изпълним горната команда, ще получим съобщението по-долу, което показва, че стойността е вмъкната успешно в Зеленчуци маса.

Сериен PostgreSQL

След създаване и вмъкване на Зеленчуци стойностите на таблицата, ще използваме ИЗБЕРЕТЕ команда за връщане на всички редове на Зеленчуци маса:

 SELECT * FROM Vegetables; 

Изход

След успешно изпълнение на горната команда, ще получим изхода по-долу:

Сериен PostgreSQL

Преглед

В Псевдо тип PostgreSQL Serial раздел, ние научихме Serial псевдо тип функционалност, която се използва най-вече за създаване на автоматични увеличения стойност на колона за конкретна таблица.