logo

Serial PostgreSQL

În această secțiune, vom înțelege funcționarea Serial PostgreSQL pseudo-tip, care ne permite să definim coloane cu incrementare automată în tabele. Și vedem și noi exemple al Pseudotip serial PostgreSQL .

Ce este pseudotipul serial PostgreSQL?

În PostgreSQL, avem un anumit tip de generator de obiecte de bază de date cunoscut ca Serial , care este obișnuit creați o secvență de numere întregi care sunt frecvent utilizate ca a Cheia principala într-o masă.

obține data curentă în java

Secvența poate fi generată cu ajutorul pseudotip SERIAL , în timp ce creăm un nou tabel, așa cum putem vedea în următoarea comandă:

 CREATE TABLE table_name( ID SERIAL ); 

PostgreSQL face următoarele dacă oferim pseudotip SERIAL la ID coloană:

  • În primul rând, PostgreSQL va crea un obiect secvență și apoi va stabili următoarea valoare creată de secvență ca valoare predefinită a unei anumite coloane.
  • După aceea, PostgreSQL va îmbunătăți un constrângere NOT NULL la coloana ID întrucât o succesiune produce întotdeauna un număr întreg care este a valoare non-nulă .
  • În cele din urmă, PostgreSQL va furniza proprietarul secvenței către coloana ID; ca ieșire, obiectul secvență este eliminat atunci când tabelul sau coloana ID este aruncat.

Notă: Putem folosi ambele comenzi pentru a specifica pseudo-tipul Serial, deoarece ambele comenzi de mai jos sunt similare una cu cealaltă.

 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 Pseudotip serial PostgreSQL a fost clasificat în trei tipuri, care sunt după cum urmează:

    SERIA MICĂ SERIAL BIGSERIAL

Avem următorul tabel, care conține toate Pseudotip serial specificația care este acceptată de PostgreSQL:

Nume Dimensiunea de depozitare Gamă
SERIA MICĂ 2 octeți 1 până la 32767
SERIAL 4 octeți 1 până la 2147483647
BIGSERIAL 8 octeți 1 până la 9223372036854775807

Sintaxa pseudo-tipului PostgreSQL Serial

Sintaxa PostgreSQL Pseudotip serial după cum urmează:

 variable_name SERIAL 

Exemple de tip SERIAL PostgreSQL

Să vedem diferite exemple pentru a înțelege cum Funcționează pseudotipul serial PostgreSQL .

Notă: Putem defini constrângerea PRIMARY KEY pentru coloana SERIAL deoarece tipul SERIAL nu creează indirect un index pe coloană sau nu face coloana ca coloană cheie primară.

Creăm un nou tabel cu ajutorul comenzii CREATE și inserăm câteva valori folosind comanda INSERT.

În exemplul de mai jos, folosim CREA comanda pentru a genera a Mașini masă în Baza de date a organizației:

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

Ieșire

The Mașini tabelul a fost creat cu succes după executarea comenzilor de mai sus, așa cum se arată în captura de ecran de mai jos:

Serial PostgreSQL

Odata ce Mașini tabelul a fost generat, putem introduce câteva valori în el folosind comanda INSERT. Și putem folosi MOD IMPLICIT cuvânt cheie în comanda INSERT sau omiteți numele coloanei (Car_id) .

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

Ieșire

După implementarea comenzii de mai sus, vom primi următorul mesaj, iar valoarea a fost introdusă cu succes în Mașini masa:

Serial PostgreSQL

SAU Folosind Cuvânt cheie IMPLICIT cu numele coloanei (Car_id):

dacă altceva dacă altceva java
 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Ieșire

La implementarea comenzii de mai sus, vom primi următorul mesaj; valoarea a fost introdusă cu succes în Mașini masa:

Serial PostgreSQL

După cum putem vedea în captura de ecran de mai sus, PostgreSQL a inserat două rânduri în Mașini masa cu Car_id valorile coloanei sunt 1 și 2 .

După crearea și inserarea Mașini valorile tabelului, vom folosi SELECTAȚI comanda returnează toate rândurile din Mașini masa:

 SELECT * FROM Cars; 

Ieșire

După implementarea cu succes a comenzii de mai sus, vom obține următorul rezultat:

Serial PostgreSQL

Putem folosi pg_get_serial_sequence() funcția pentru a obține numele secvenței a SERIAL coloană dintr-un tabel specificat, așa cum putem vedea în sintaxa de mai jos:

 pg_get_serial_sequence('table_name','column_name') 

Pentru a obține Valoarea curentă creat de secvență, putem trece un nume de secvență funcției currval().

În exemplul următor, am folosit currval () funcția pentru a returna valoarea curentă produsă de Mașini masa Car_id_seq obiect:

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

Ieșire

După implementarea comenzii de mai sus, vom obține rezultatul de mai jos:

Serial PostgreSQL

Putem folosi RETURNING Car_id clauză în comanda INSERT dacă dorim să obținem acele valori create de secvență atunci când inserăm un nou rând în tabel.

Comanda de mai jos este folosită pentru a insera un nou rând în Mașini tabel și returnează acele înregistrări generate pentru Car_id coloană.

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

Ieșire

La executarea comenzii de mai sus, vom obține următoarea ieșire, care returnează Car_id la fel de 3 :

Serial PostgreSQL

Notă:

  • După cum am înțeles mai sus, generator de secvențe operațiunea nu este sigură pentru tranzacții, ceea ce înseamnă că fiecare utilizator va primi o valoare diferită dacă două baze de date paralele conexiunile încearcă să obțină următoarea valoare dintr-o secvență.
  • Și numărul de secvență al acelui utilizator va fi inactiv și creează un decalaj în secvența dacă un utilizator poate anula tranzacția .

Exemplul 2

Să vedem încă un exemplu pentru a învăța Pseudotip serial detaliat.

Deci, vom crea un alt tabel nou ca a Legume tabel cu ajutorul comenzii CREATE într-un tabel similar Bază de date acesta este Organizare cu Veg_id coloana ca SERIAL pseudotip.

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

Ieșire

boolean în c

The Legume tabelul a fost creat cu succes după executarea comenzilor de mai sus, așa cum se arată în captura de ecran de mai jos:

Serial PostgreSQL

Odata ce Legume tabelul a fost generat, vom insera câteva valori în el folosind comanda INSERT și vom omite Veggies_id coloană așa cum se arată în comanda de mai jos:

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

Ieșire

Vom primi următorul mesaj la implementarea comenzii de mai sus: valoarea a fost inserată cu succes în Legume masa.

Serial PostgreSQL

Sau, putem folosi și Mod implicit cuvântul cheie și folosește Veggie_id coloană așa cum se arată în următoarea comandă:

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

Ieșire

După executarea comenzii de mai sus, vom primi mesajul de mai jos, care spune că fie putem folosi Cuvânt cheie implicit sau ignora numele coloanei , vom obține o ieșire similară:

Serial PostgreSQL

Prin urmare, vom adăuga mai multe valori la Mașini tabel cu ajutorul următoarei comenzi:

prioritatea operatorului java
 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'); 

Ieșire

După executarea comenzii de mai sus, vom primi mesajul de mai jos, care afișează că valoarea a fost introdusă cu succes în Legume masa.

Serial PostgreSQL

După crearea și inserarea Legume valorile tabelului, vom folosi SELECTAȚI comandă pentru a returna toate rândurile din Legume masa:

 SELECT * FROM Vegetables; 

Ieșire

După implementarea cu succes a comenzii de mai sus, vom obține rezultatul de mai jos:

Serial PostgreSQL

Prezentare generală

În Pseudotip de serie PostgreSQL secțiunea, am învățat funcționalitatea pseudotipului serial, care este folosită în principal pentru a crea un creşteri automate valoarea coloanei pentru un anumit tabel.