Î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ă:
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:
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:
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:
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:
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:
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 :
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:
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.
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ă:
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.
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:
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.