Tässä osiossa aiomme ymmärtää toiminnan PostgreSQL-sarja pseudotyyppi, jonka avulla voimme määritellä sarakkeiden automaattinen lisäys taulukoissa. Ja me myös näemme esimerkkejä -lta PostgreSQL Serial pseudotyyppi .
Mikä on PostgreSQL Serial pseudotyyppi?
PostgreSQL:ssä meillä on yksi tietynlainen tietokantaobjektien generaattori, joka tunnetaan nimellä Sarja , johon on tottunut luoda kokonaislukujen sarja joita käytetään usein a Pääavain taulukossa.
Sekvenssi voidaan luoda avulla SERIAL pseudo-tyyppi , kun luomme uutta taulukkoa, kuten voimme nähdä seuraavasta komennosta:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL tekee seuraavan, jos tarjoamme SERIAL pseudo-tyyppi kohtaan ID sarake:
- Ensin PostgreSQL luo sarjaobjektin ja määrittää sitten seuraavan sekvenssin luoman arvon tietyn sarakkeen ennalta määritetyksi arvoksi.
- Sen jälkeen PostgreSQL parantaa a EI NULL-rajoitus kohtaan ID-sarake koska sekvenssi tuottaa aina kokonaisluvun, joka on a ei-nolla-arvo .
- Viimeinkin PostgreSQL antaa sekvenssin omistajan ID sarake; ulostulona sekvenssiobjekti poistetaan, kun taulukko tai ID-sarake on pudonnut.
Huomautus: Voimme käyttää molempia komentoja Serial-pseudotyypin määrittämiseen, koska molemmat alla olevat komennot ovat samanlaisia.
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 Serial pseudotyyppi on luokiteltu kolmeen tyyppiin, jotka ovat seuraavat:
Meillä on seuraava taulukko, joka sisältää kaikki Sarja pseudo-tyyppi spesifikaatio, jota PostgreSQL tukee:
Nimi | Tallennuksen koko | Alue |
---|---|---|
PIENSARJA | 2 tavua | 1-32767 |
SARJA | 4 tavua | 1 - 2147483647 |
BIGSERIAL | 8 tavua | 1 numeroon 9223372036854775807 |
PostgreSQL-sarjan pseudotyypin syntaksi
PostgreSQL:n syntaksi Sarja pseudo-tyyppi seuraavasti:
variable_name SERIAL
Esimerkkejä PostgreSQL SERIAL -tyypistä
Katsotaanpa erilaisia esimerkkejä ymmärtääksemme, miten PostgreSQL Serial pseudotyyppi toimii .
Huomautus: Voimme määrittää PRIMARY KEY -rajoituksen SERIAL-sarakkeelle, koska SERIAL-tyyppi ei epäsuorasti luo indeksiä sarakkeeseen tai tee sarakkeesta ensisijaisen avaimen saraketta.
Luomme yhden uuden taulukon CREATE-komennon avulla ja lisäämme arvoja INSERT-komennolla.
Alla olevassa esimerkissä käytämme LUODA komento luoda a Autot pöytään Organisaation tietokanta:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Lähtö
The Autot taulukko on luotu onnistuneesti yllä olevien komentojen suorittamisen jälkeen, kuten alla olevassa kuvakaappauksessa näkyy:
Kerran Autot taulukko on luotu, voimme lisätä siihen arvoja INSERT-komennolla. Ja voimme käyttää OLETUS avainsana INSERT-komennossa tai jätä sarakkeen nimi pois (auton_tunnus) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Lähtö
Yllä olevan komennon toteuttamisen jälkeen saamme seuraavan viestin, ja arvo on lisätty onnistuneesti Autot pöytä:
TAI Käyttämällä OLETUSAvainsana sarakkeen nimellä (Car_id):
talviunen murre
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Lähtö
Toteutettaessa yllä olevaa komentoa, saamme seuraavan viestin; arvo on lisätty onnistuneesti Autot pöytä:
Kuten yllä olevassa kuvakaappauksessa näemme, PostgreSQL lisäsi kaksi riviä tiedostoon Autot pöytä kanssa Auton_tunnus sarakkeen arvot ovat 1 ja 2 .
Kun olet luonut ja lisännyt Autot taulukon arvot, käytämme VALITSE komento palauttaa kaikki rivit Autot pöytä:
SELECT * FROM Cars;
Lähtö
Kun yllä oleva komento on toteutettu onnistuneesti, saamme seuraavan tuloksen:
Voimme käyttää pg_get_serial_sequence() funktio saada sekvenssinimen a SARJA sarake määritetyssä taulukossa, kuten näemme alla olevasta syntaksista:
pg_get_serial_sequence('table_name','column_name')
Saadaksesi nykyinen arvo sekvenssin luoma, voimme välittää sekvenssin nimen currval()-funktiolle.
Seuraavassa esimerkissä käytimme currval () funktio palauttaa sen tuottaman nykyisen arvon Autot pöytä Car_id_seq esine:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Lähtö
Yllä olevan komennon toteuttamisen jälkeen saamme alla olevan lähdön:
Voimme käyttää PALAUTUS Auton_tunnus lauseke INSERT-komentoon, jos haluamme saada sekvenssin luomat arvot, kun lisäämme uuden rivin taulukkoon.
Alla olevaa komentoa käytetään uuden rivin lisäämiseen Autot taulukko ja palauttaa sovellukselle luodut tietueet Auton_tunnus sarakkeessa.
kevät saappaiden huomautukset
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Lähtö
Suorittaessamme yllä olevan komennon saamme seuraavan lähdön, joka palauttaa Auton_tunnus kuten 3 :
Huomautus:
- Kuten yllä ymmärsimme, sekvenssigeneraattori toiminta ei ole tapahtumaturvallista, mikä tarkoittaa, että jokainen käyttäjä saa eri arvon jos kaksi rinnakkaista tietokantaa yhteydet yrittävät saada seuraavan arvon sekvenssistä.
- Ja kyseisen käyttäjän järjestysnumero on käyttämättömänä ja luo aukon sekvenssiin if yksi käyttäjä voi peruuttaa tapahtuman .
Esimerkki2
Katsotaanpa vielä yksi esimerkki oppiaksemme Sarja pseudo-tyyppi yksityiskohtaisesti.
Joten aiomme luoda toisen uuden taulukon a Vihannekset taulukko CREATE-komennon avulla samanlaiseksi tietokanta tuo on Organisaatio kanssa Veg_id sarakkeessa SARJA pseudotyyppinen.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Lähtö
The Vihannekset taulukko on luotu onnistuneesti yllä olevien komentojen suorittamisen jälkeen, kuten alla olevassa kuvakaappauksessa näkyy:
Kerran Vihannekset taulukko on luotu, lisäämme siihen joitain arvoja INSERT-komennolla ja jätämme pois Vihannesten_id sarake alla olevan komennon mukaisesti:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Lähtö
Saamme seuraavan viestin, kun yllä oleva komento toteutetaan: arvo on lisätty onnistuneesti Vihannekset pöytä.
Tai voimme myös käyttää Oletus avainsanaa ja käyttää Kasvis_id sarake seuraavan komennon mukaisesti:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Lähtö
Yllä olevan komennon suorittamisen jälkeen saamme alla olevan viestin, jossa sanotaan, että joko voimme käyttää Oletusavainsana tai ohita sarakkeen nimi , saamme samanlaisen tulosteen:
Siksi lisäämme arvoihin lisää arvoja Autot taulukko seuraavan komennon avulla:
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');
Lähtö
Yllä olevan komennon suorittamisen jälkeen saamme alla olevan viestin, joka näyttää, että arvo on lisätty onnistuneesti Vihannekset pöytä.
Kun olet luonut ja lisännyt Vihannekset taulukon arvot, käytämme VALITSE komento palauttaa kaikki rivit Vihannekset pöytä:
SELECT * FROM Vegetables;
Lähtö
Kun yllä oleva komento on toteutettu onnistuneesti, saamme alla olevan lähdön:
Yleiskatsaus
Vuonna PostgreSQL Serial pseudotyyppi -osiossa olemme oppineet Serial pseudotyyppisen toiminnallisuuden, jota käytetään useimmiten luomaan automaattiset lisäykset sarakkeen arvo tietylle taulukolle.