logo

PostgreSQL seriāls

Š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:

    MAZSĒRIJS SERIĀLS LIELAIS SERIĀLS

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ā:

PostgreSQL seriāls

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:

PostgreSQL seriāls

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:

PostgreSQL seriāls

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:

PostgreSQL seriāls

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:

PostgreSQL seriāls

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_id3 :

PostgreSQL seriāls

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ā:

PostgreSQL seriāls

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.

PostgreSQL seriāls

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:

PostgreSQL seriāls

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.

PostgreSQL seriāls

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:

PostgreSQL seriāls

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.