I det här avsnittet kommer vi att förstå hur PostgreSQL seriell pseudo-typ, som tillåter oss att definiera automatiskt ökande kolumner i tabeller. Och vi ser också exempel av PostgreSQL seriell pseudo-typ .
Vad är PostgreSQL Serial pseudo-typ?
I PostgreSQL har vi en speciell typ av databasobjektgenerator som kallas Serie , som är van vid skapa en sekvens av heltal som ofta används som en Primärnyckel i ett bord.
Sekvensen kan genereras med hjälp av SERIAL pseudo-typ , medan vi skapar en ny tabell, som vi kan se i följande kommando:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL gör följande om vi tillhandahåller SERIAL pseudo-typ till ID kolumn:
- För det första kommer PostgreSQL att skapa ett sekvensobjekt och sedan etablera nästa värde som skapas av sekvensen som den specifika kolumnens fördefinierade värde.
- Efter det kommer PostgreSQL att förbättra en INTE NULL-begränsning till ID-kolumn eftersom en sekvens alltid producerar ett heltal som är a icke-nullvärde .
- Äntligen kommer PostgreSQL att tillhandahålla ägaren av sekvensen till ID kolumn; som en utgång tas sekvensobjektet bort när tabellen eller ID-kolumn tappas.
Obs: Vi kan använda båda kommandona för att specificera seriell pseudo-typ eftersom båda kommandona nedan liknar varandra.
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;
De PostgreSQL seriell pseudo-typ har klassificerats i tre typer som är följande:
Vi har följande tabell, som innehåller alla Seriell pseudo-typ specifikation som stöds av PostgreSQL:
java int som sträng
namn | Storlek för förvaring | Räckvidd |
---|---|---|
LITENSERIAL | 2 byte | 1 till 32767 |
SERIE | 4 bytes | 1 till 2147483647 |
BIGSERIAL | 8 byte | 1 till 9223372036854775807 |
Syntax för PostgreSQL seriell pseudotyp
Syntaxen för PostgreSQL Seriell pseudo-typ som följer:
variable_name SERIAL
Exempel på PostgreSQL SERIAL-typ
Låt oss se olika exempel för att förstå hur PostgreSQL seriell pseudotyp fungerar .
Obs: Vi kan definiera PRIMARY KEY-begränsningen för SERIAL-kolumnen eftersom SERIAL-typen inte indirekt skapar ett index på kolumnen eller gör kolumnen till den primära nyckelkolumnen.
Vi skapar en ny tabell med hjälp av CREATE-kommandot och infogar några värden med kommandot INSERT .
I exemplet nedan använder vi SKAPA kommando för att generera en Bilar bordet i Organisationsdatabas:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Produktion
De Bilar Tabellen har skapats framgångsrikt efter att ha utfört kommandona ovan, som visas i skärmdumpen nedan:
När Bilar tabell har genererats, kan vi infoga några värden i den med kommandot INSERT. Och vi kan använda STANDARD nyckelord i kommandot INSERT eller utelämna kolumnnamnet (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Produktion
Efter att ha implementerat kommandot ovan kommer vi att få följande meddelande och värdet har infogats framgångsrikt i Bilar tabell:
ELLER Använda DEFAULT nyckelord med kolumnnamnet (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Produktion
När vi implementerar ovanstående kommando kommer vi att få följande meddelande; värdet har infogats framgångsrikt i Bilar tabell:
dela en sträng i c++
Som vi kan se i skärmdumpen ovan, infogade PostgreSQL två rader i Bilar bord med Car_id kolumnvärdena är 1 och 2 .
Efter att ha skapat och infogat Bilar tabellens värden kommer vi att använda VÄLJ kommandot returnerar alla rader i Bilar tabell:
xor c++
SELECT * FROM Cars;
Produktion
Efter att ha implementerat ovanstående kommando kommer vi att få följande resultat:
Vi kan använda pg_get_serial_sequence() funktion för att få sekvensnamnet för en SERIE kolumn i en specificerad tabell som vi kan se i nedanstående syntax:
pg_get_serial_sequence('table_name','column_name')
För att få nuvarande värde skapad av sekvensen kan vi skicka ett sekvensnamn till funktionen currval().
I följande exempel använde vi currval() funktion för att returnera det aktuella värdet som produceras av Bilar tabell Car_id_seq objekt:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Produktion
Efter att ha implementerat kommandot ovan kommer vi att få följande utdata:
Vi kan använda RETURNERAR Car_id sats i kommandot INSERT om vi vill få de värden som skapas av sekvensen när vi infogar en ny rad i tabellen.
Kommandot nedan används för att infoga en ny rad i Bilar tabellen och returnerar de poster som genererats för Car_id kolumn.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Produktion
När vi kör kommandot ovan kommer vi att få följande utdata, som returnerar Car_id som 3 :
Notera:
- Som vi förstod ovan, sekvensgenerator operationen är inte transaktionssäker, vilket innebär att varje användare kommer att få ett annat värde om två parallella databas anslutningar försöker få nästa värde från en sekvens.
- Och sekvensnumret för den användaren kommer att vara inaktivt och skapar en lucka i sekvensen if en användare kan återställa transaktionen .
Exempel 2
Låt oss se ytterligare ett exempel för att lära oss Seriell pseudo-typ i detalj.
Så vi kommer att skapa ytterligare en ny tabell som en Grönsaker tabell med hjälp av kommandot CREATE till en liknande databas det är Organisation med Veg_id kolumn som SERIE pseudo-typ.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Produktion
De Grönsaker Tabellen har skapats framgångsrikt efter att ha utfört kommandona ovan, som visas i skärmdumpen nedan:
rädda från
När Grönsaker tabell har genererats, kommer vi att infoga några värden i den med kommandot INSERT och utelämna Veggies_id kolumn som visas i kommandot nedan:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Produktion
Vi kommer att få följande meddelande när vi implementerar kommandot ovan: värdet har infogats framgångsrikt i Grönsaker tabell.
Eller så kan vi också använda Standard nyckelordet och använder Veggie_id kolumn som visas i följande kommando:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Produktion
Efter att ha utfört kommandot ovan kommer vi att få meddelandet nedan, som säger att antingen kan vi använda Standard nyckelord eller den ignorera kolumnnamnet , kommer vi att få en liknande utgång:
Därför kommer vi att lägga till några fler värden till Bilar tabell med hjälp av följande kommando:
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');
Produktion
Efter att ha utfört kommandot ovan kommer vi att få meddelandet nedan, som visar att värdet har infogats framgångsrikt i Grönsaker tabell.
turbo c++ ladda ner
Efter att ha skapat och infogat Grönsaker tabellens värden kommer vi att använda VÄLJ kommandot för att returnera alla rader i Grönsaker tabell:
SELECT * FROM Vegetables;
Produktion
Efter att ha implementerat ovanstående kommando kommer vi att få följande utdata:
Översikt
I den PostgreSQL seriell pseudotyp avsnitt har vi lärt oss seriell pseudo-typ funktionalitet, som mestadels används för att skapa en automatiska ökningar kolumnvärde för en viss tabell.