Šajā sadaļā mēs sapratīsim, kā darbojas PostgreSQL seriāls pseido-tips, kas ļauj definēt automātiskās palielināšanas kolonnas tabulās. Un mēs arī redzam piemēri no PostgreSQL sērijas pseido-tips .
Kas ir PostgreSQL Serial pseidotips?
Programmā PostgreSQL mums ir viens konkrēta veida datu bāzes objektu ģenerators, kas pazīstams kā Seriāls , kas ir pieradis izveidot veselu skaitļu secību kuras bieži izmanto kā a Primārā atslēga tabulā.
Secību var ģenerēt, izmantojot SĒRIJAS pseido-tipa , kamēr mēs veidojam jaunu tabulu, kā redzams šādā komandā:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL veic šādas darbības, ja mēs nodrošinām SĒRIJAS pseido-tipa uz ID kolonna:
- Pirmkārt, PostgreSQL izveidos secības objektu un pēc tam noteiks nākamo secības izveidoto vērtību kā konkrētās kolonnas iepriekš definēto vērtību.
- Pēc tam PostgreSQL uzlabos a NOT NULL ierobežojums uz ID kolonna jo secība vienmēr rada veselu skaitli, kas ir a vērtība, kas nav nulles vērtība .
- Visbeidzot, PostgreSQL nodrošinās secības īpašnieku ID kolonna; kā izvade secības objekts tiek noņemts, kad tabula vai ID kolonna tiek nomests.
Piezīme. Mēs varam izmantot abas komandas, lai norādītu sērijas pseido-tipu, jo abas tālāk esošās komandas ir līdzīgas viena otrai.
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 sērijas pseido-tips ir iedalīts trīs veidos, kas ir šādi:
Mums ir šāda tabula, kurā ir viss Sērijas pseido-tips specifikācija, ko atbalsta PostgreSQL:
Vārds | Krātuves lielums | Diapazons |
---|---|---|
MAZSĒRIJS | 2 baiti | 1 līdz 32767 |
SERIĀLS | 4 baiti | 1 uz 2147483647 |
LIELAIS SERIĀLS | 8 baiti | 1 uz 9223372036854775807 |
PostgreSQL sērijas pseidotipa sintakse
PostgreSQL sintakse Sērijas pseido-tips sekojoši:
variable_name SERIAL
PostgreSQL SERIAL tipa piemēri
Apskatīsim dažādus piemērus, lai saprastu, kā PostgreSQL Serial pseido tips darbojas .
Piezīme. Mēs varam definēt ierobežojumu PRIMARY KEY kolonnai SERIAL, jo SERIAL tips kolonnā netieši neveido indeksu vai nepadara kolonnu par primārās atslēgas kolonnu.
Mēs veidojam vienu jaunu tabulu ar komandas CREATE palīdzību un ievietojam dažas vērtības, izmantojot komandu INSERT .
Tālāk esošajā piemērā mēs izmantojam IZVEIDOT komanda, lai ģenerētu a Automašīnas tabulā Organizācijas datu bāze:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Izvade
The Automašīnas tabula ir veiksmīgi izveidota pēc iepriekš minēto komandu izpildes, kā parādīts zemāk esošajā ekrānuzņēmumā:
Reiz Automašīnas tabula ir ģenerēta, mēs varam tajā ievietot dažas vērtības, izmantojot komandu INSERT. Un mēs varam izmantot NOKLUSĒJUMS atslēgvārdu komandā INSERT vai izlaidiet kolonnas nosaukumu (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Izvade
fmoviez
Pēc iepriekš minētās komandas ieviešanas mēs saņemsim šādu ziņojumu, un vērtība ir veiksmīgi ievietota Automašīnas tabula:
VAI Izmantojot NOKLUSĒJUMS Atslēgvārds ar kolonnas nosaukumu (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Izvade
Ieviešot iepriekš minēto komandu, mēs saņemsim šādu ziņojumu; vērtība ir veiksmīgi ievietota Automašīnas tabula:
Kā redzams iepriekš redzamajā ekrānuzņēmumā, PostgreSQL ievietoja divas rindas Automašīnas galds ar Automašīnas_id kolonnu vērtības ir 1. un 2 .
Pēc izveidošanas un ievietošanas Automašīnas tabulas vērtības, mēs izmantosim ATLASĪT komanda atgriež visas rindas Automašīnas tabula:
SELECT * FROM Cars;
Izvade
Pēc veiksmīgas iepriekš minētās komandas ieviešanas mēs iegūsim šādu rezultātu:
Mēs varam izmantot pg_get_serial_sequence() funkcija, lai iegūtu a secības nosaukumu SERIĀLS kolonnu norādītajā tabulā, kā redzams tālāk norādītajā sintaksē:
pg_get_serial_sequence('table_name','column_name')
Lai iegūtu pašreizējā vērtība ko rada secība, mēs varam nodot secības nosaukumu funkcijai currval().
Nākamajā piemērā mēs izmantojām currval () funkcija, lai atgrieztu pašreizējo vērtību, ko rada Automašīnas tabula Car_id_seq objekts:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Izvade
Pēc iepriekš minētās komandas ieviešanas mēs iegūsim šādu izvadi:
Mēs varam izmantot ATGRIEŠANĀS Car_id klauzulu komandā INSERT, ja mēs vēlamies iegūt šīs secības radītās vērtības, kad mēs ievietojam tabulā jaunu rindu.
Tālāk norādītā komanda tiek izmantota, lai ievietotu jaunu rindu Automašīnas tabulu un atgriež tos ierakstus, kas ģenerēti Automašīnas_id kolonna.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Izvade
Izpildot iepriekš minēto komandu, mēs iegūsim šādu izvadi, kas atgriež Automašīnas_id kā 3 :
Piezīme:
- Kā mēs sapratām iepriekš, secību ģenerators darbība nav droša darījumu veikšanai, kas nozīmē, ka katrs lietotājs iegūs atšķirīgu vērtību ja divas paralēlas datu bāzes savienojumi mēģina iegūt nākamo vērtību no secības.
- Un šī lietotāja kārtas numurs būs dīkstāvē un izveidos atstarpi secībā, ja viens lietotājs var atsaukt darījumu .
Piemērs2
Apskatīsim vēl vienu piemēru, lai uzzinātu Sērijas pseido-tips detalizēti.
Tātad, mēs izveidosim vēl vienu jaunu tabulu kā a Dārzeņi tabulu ar komandas CREATE palīdzību līdzīgā datu bāze tas ir Organizācija Ar Veg_id kolonnu kā SERIĀLS pseidotips.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Izvade
The Dārzeņi tabula ir veiksmīgi izveidota pēc iepriekš minēto komandu izpildes, kā parādīts zemāk esošajā ekrānuzņēmumā:
Reiz Dārzeņi tabula ir ģenerēta, mēs tajā ievietosim dažas vērtības, izmantojot komandu INSERT, un izlaidīsim Veggies_id kolonnu, kā parādīts tālāk esošajā komandā:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Izvade
Ieviešot iepriekš minēto komandu, mēs saņemsim šādu ziņojumu: vērtība ir veiksmīgi ievietota Dārzeņi tabula.
Vai arī mēs varam izmantot Noklusējums atslēgvārdu un izmanto Veggie_id kolonnu, kā parādīts šādā komandā:
kas ir orākuls
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Izvade
Pēc iepriekš minētās komandas izpildes mēs saņemsim zemāk esošo ziņojumu, kurā teikts, ka mēs varam izmantot Noklusējuma atslēgvārds vai ignorēt kolonnas nosaukumu , mēs iegūsim līdzīgu izvadi:
Tāpēc mēs pievienosim vēl dažas vērtības Automašīnas tabulu, izmantojot šādu komandu:
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');
Izvade
Pēc iepriekš minētās komandas izpildes mēs saņemsim zemāk esošo ziņojumu, kas parāda, ka vērtība ir veiksmīgi ievietota Dārzeņi tabula.
Pēc izveidošanas un ievietošanas Dārzeņi tabulas vērtības, mēs izmantosim ATLASĪT komanda, lai atgrieztu visas rindas Dārzeņi tabula:
SELECT * FROM Vegetables;
Izvade
Pēc veiksmīgas iepriekš minētās komandas ieviešanas mēs saņemsim šādu izvadi:
Pārskats
Iekš PostgreSQL sērijas pseido-tips sadaļā esam apguvuši Serial pseido tipa funkcionalitāti, ko pārsvarā izmanto, lai izveidotu an automātiski palielinās kolonnas vērtība konkrētai tabulai.