У овом одељку ћемо разумети рад ПостгреСКЛ Сериал псеудо-тип, који нам омогућава да дефинишемо колоне са аутоматским повећањем у табелама. И такође видимо примери од ПостгреСКЛ серијски псеудо-тип .
Шта је ПостгреСКЛ серијски псеудо-тип?
У ПостгреСКЛ-у имамо једну посебну врсту генератора објеката базе података познату као Сериал , на који је навикао креирати низ целих бројева који се често користе као а Примарни кључ у столу.
Секвенца се може генерисати уз помоћ СЕРИЈСКИ псеудо-тип , док креирамо нову табелу, као што можемо видети у следећој команди:
CREATE TABLE table_name( 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;
Тхе ПостгреСКЛ серијски псеудо-тип је класификован у три типа, а то су:
Имамо следећу табелу, која садржи све Серијски псеудо-тип спецификација коју подржава ПостгреСКЛ:
Име | Величина за складиштење | Домет |
---|---|---|
СМАЛЛСЕРИАЛ | 2 бајта | 1 до 32767 |
СЕРИАЛ | 4 бајта | 1 до 2147483647 |
БИГСЕРИАЛ | 8 бајтова | 1 до 9223372036854775807 |
Синтакса ПостгреСКЛ серијског псеудо-типа
Синтакса ПостгреСКЛ-а Серијски псеудо-тип као што следи:
variable_name SERIAL
Примери типа ПостгреСКЛ СЕРИАЛ
Хајде да видимо различите примере да бисмо разумели како ПостгреСКЛ серијски псеудо тип ради .
Напомена: Можемо да дефинишемо ограничење ПРИМАРИ КЕИ за колону СЕРИАЛ јер тип СЕРИАЛ не индиректно креира индекс на колони нити чини колону колоном примарног кључа.
Креирамо једну нову табелу уз помоћ команде ЦРЕАТЕ и убацујемо неке вредности помоћу команде ИНСЕРТ.
У доњем примеру користимо КРЕИРАЈ команда за генерисање а Аутомобили сто у База података организације:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Излаз
Тхе Аутомобили табела је успешно креирана након извршавања горњих команди, као што је приказано на слици испод:
Када се Аутомобили табела је генерисана, можемо да убацимо неке вредности у њу помоћу наредбе ИНСЕРТ. И можемо да користимо УОБИЧАЈЕНО кључну реч у команди ИНСЕРТ или изоставите назив колоне (Цар_ид) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Излаз
Након имплементације горње команде, добићемо следећу поруку и вредност је успешно уметнута у Аутомобили сто:
ИЛИ Помоћу ДЕФАУЛТ Кеиворд са именом колоне (Цар_ид):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Излаз
Приликом имплементације горње команде, добићемо следећу поруку; вредност је успешно уметнута у Аутомобили сто:
Као што видимо на горњој слици екрана, ПостгреСКЛ је уметнуо два реда у Аутомобили сто са Цар_ид вредности колона су 1 и 2 .
Након креирања и уметања Аутомобили вредности табеле, користићемо СЕЛЕЦТ команда враћа све редове Аутомобили сто:
читати јсон датотеке
SELECT * FROM Cars;
Излаз
Након успешне имплементације горње команде, добићемо следећи резултат:
Можемо користити пг_гет_сериал_секуенце() функцију за добијање имена секвенце а СЕРИАЛ колону у наведеној табели као што можемо видети у доњој синтакси:
pg_get_serial_sequence('table_name','column_name')
Да бисте добили Тренутна вредност креиран секвенцом, можемо проследити име секвенце функцији цуррвал().
У следећем примеру користили смо цуррвал() функција за враћање тренутне вредности коју производи Аутомобили сто Цар_ид_сек објекат:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Излаз
Након имплементације горње команде, добићемо доњи излаз:
Можемо користити РЕТУРНИНГ Цар_ид клаузулу у наредбу ИНСЕРТ ако желимо да добијемо те вредности које креира секвенца када убацимо нови ред у табелу.
Следећа команда се користи за уметање новог реда у Аутомобили табелу и враћа оне записе генерисане за Цар_ид колона.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Излаз
Када извршимо горњу команду, добићемо следећи излаз, који враћа Цар_ид као 3 :
Белешка:
- Као што смо горе разумели, генератор секвенце операција није трансакцијско безбедна, што имплицира да ће сваки корисник добити различиту вредност ако две паралелне базе података везе покушавају да добију следећу вредност из низа.
- И редни број тог корисника ће бити неактиван и ствара празнину у низу ако један корисник може вратити трансакцију .
Пример2
Хајде да видимо још један пример да научимо Серијски псеудо-тип детаљно.
Дакле, креираћемо још једну нову табелу као а Поврће табелу уз помоћ наредбе ЦРЕАТЕ у сличну база података то је Организација са Вег_ид колона као СЕРИАЛ псеудо-тип.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Излаз
Тхе Поврће табела је успешно креирана након извршавања горњих команди, као што је приказано на слици испод:
Када се Поврће табела је генерисана, уметнућемо неке вредности у њу помоћу наредбе ИНСЕРТ и изоставити Веггиес_ид колона као што је приказано у наредби испод:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Излаз
Добићемо следећу поруку о примени горње команде: вредност је успешно уметнута у Поврће сто.
Или, такође можемо да користимо Уобичајено кључну реч и користи Веггие_ид колона као што је приказано у следећој команди:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Излаз
Након извршења горње команде, добићемо поруку испод, која каже да или можемо да користимо Подразумевана кључна реч или занемарите назив колоне , добићемо сличан излаз:
Због тога ћемо додати још неке вредности Аутомобили табела уз помоћ следеће команде:
претворити из стринга у цео број јава
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');
Излаз
Након извршења горње команде, добићемо доњу поруку која показује да је вредност успешно уметнута у Поврће сто.
Након креирања и уметања Поврће вредности табеле, користићемо СЕЛЕЦТ наредба за враћање свих редова Поврће сто:
SELECT * FROM Vegetables;
Излаз
Након успешне имплементације горње команде, добићемо следећи излаз:
Преглед
У ПостгреСКЛ серијски псеудо-тип одељку, научили смо серијски псеудо-тип функционалност, која се углавном користи за креирање аутоматски повећава вредност колоне за одређену табелу.