logo

Serial PostgreSQL

En aquesta secció, entendrem el funcionament de Serial PostgreSQL pseudotipus, que ens permet definir columnes d'increment automàtic en taules. I també ho veiem exemples del Pseudotip de sèrie PostgreSQL .

Què és el pseudotipus sèrie de PostgreSQL?

A PostgreSQL, tenim un tipus particular de generador d'objectes de base de dades conegut com Serial , que s'acostuma a fer crear una seqüència de nombres enters que s'utilitzen freqüentment com a Clau primària en una taula.

La seqüència es pot generar amb l'ajuda de pseudotipus SERIE , mentre estem creant una taula nova, com podem veure a la següent comanda:

 CREATE TABLE table_name( ID SERIAL ); 

El PostgreSQL fa el següent si proporcionem el pseudotipus SERIE fins al ID columna:

  • En primer lloc, PostgreSQL crearà un objecte de seqüència i després establirà el següent valor creat per la seqüència com el valor predefinit de la columna en particular.
  • Després d'això, PostgreSQL millorarà a restricció NOT NULL fins al columna ID ja que una successió sempre produeix un nombre enter que és a valor no nul .
  • Finalment, PostgreSQL proporcionarà el propietari de la seqüència al fitxer columna ID; com a sortida, l'objecte seqüència s'elimina quan la taula o columna ID es deixa caure.

Nota: podem utilitzar ambdues ordres per especificar el pseudotipus de sèrie, ja que les dues ordres següents són similars entre si.

 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; 

El Pseudotip de sèrie PostgreSQL s'ha classificat en tres tipus que són els següents:

    SERIE PETITA SERIE GRAN SERIE

Tenim la taula següent, que conté tots els Pseudotipus de sèrie especificació que és compatible amb PostgreSQL:

Nom Mida d'emmagatzematge Interval
SERIE PETITA 2 bytes 1 al 32767
SERIE 4 bytes 1 al 2147483647
GRAN SERIE 8 bytes 1 al 9223372036854775807

Sintaxi del pseudotipus de sèrie PostgreSQL

La sintaxi del PostgreSQL Pseudotipus de sèrie com segueix:

 variable_name SERIAL 

Exemples de tipus PostgreSQL SERIAL

Vegem diferents exemples per entendre com Funciona el pseudotipus sèrie de PostgreSQL .

Nota: Podem definir la restricció PRIMARY KEY per a la columna SERIAL perquè el tipus SERIAL no crea indirectament un índex a la columna ni fa que la columna sigui la columna de clau primària.

Estem creant una taula nova amb l'ajuda de l'ordre CREATE i inserint alguns valors mitjançant l'ordre INSERT .

A l'exemple següent, estem utilitzant el CREAR comanda per generar a Cotxes taula a la Base de dades de l'organització:

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

Sortida

El Cotxes La taula s'ha creat correctament després d'executar les ordres anteriors, tal com es mostra a la captura de pantalla següent:

Serial PostgreSQL

Un cop el Cotxes s'ha generat la taula, podem inserir-hi alguns valors mitjançant l'ordre INSERT. I podem utilitzar el PER Defecte paraula clau a l'ordre INSERT o ometeu el nom de la columna (Car_id) .

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

Sortida

Després d'implementar l'ordre anterior, obtindrem el missatge següent i el valor s'ha inserit correctament al fitxer Cotxes taula:

Serial PostgreSQL

O Utilitzant el Paraula clau predeterminada amb el nom de la columna (Car_id):

 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Sortida

En implementar l'ordre anterior, obtindrem el missatge següent; el valor s'ha inserit correctament al fitxer Cotxes taula:

Serial PostgreSQL

Com podem veure a la captura de pantalla anterior, el PostgreSQL va inserir dues files al fitxer Cotxes taula amb el Car_id els valors de la columna són 1 i 2 .

Després de crear i inserir el Cotxes valors de la taula, farem servir el SELECCIONA L'ordre retorna totes les files del fitxer Cotxes taula:

 SELECT * FROM Cars; 

Sortida

Després d'implementar correctament l'ordre anterior, obtindrem el següent resultat:

Serial PostgreSQL

Podem utilitzar el pg_get_serial_sequence() funció per obtenir el nom de la seqüència de a SERIE columna en una taula especificada com podem veure a la sintaxi següent:

 pg_get_serial_sequence('table_name','column_name') 

Per aconseguir el valor actual creada per la seqüència, podem passar un nom de seqüència a la funció currval().

què vol dir xdxd

En l'exemple següent, hem utilitzat el currval () funció per retornar el valor actual produït per Cotxes taula Car_id_seq objecte:

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

Sortida

Després d'implementar l'ordre anterior, obtindrem la següent sortida:

Serial PostgreSQL

Podem utilitzar el TORNANT Car_id clàusula a l'ordre INSERT si volem obtenir aquests valors creats per la seqüència quan inserim una nova fila a la taula.

L'ordre següent s'utilitza per inserir una nova fila al fitxer Cotxes taula i retorna els registres generats per a Car_id columna.

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

Sortida

En executar l'ordre anterior, obtindrem la següent sortida, que retorna el Car_id com 3 :

Serial PostgreSQL

Nota:

  • Com hem entès més amunt, el generador de seqüències L'operació no és segura per a transaccions, la qual cosa implica que cada usuari obtindrà un valor diferent si dues bases de dades paral·leles connexions intenten obtenir el valor següent d'una seqüència.
  • I el número de seqüència d'aquest usuari estarà inactiu i crearà un buit a la seqüència si un usuari pot revertir la transacció .

Exemple 2

Vegem un exemple més per aprendre Pseudotipus de sèrie en detall.

Per tant, crearem una altra taula nova com a Verdures taula amb l'ajuda de l'ordre CREATE en un similar base de dades això és Organització amb el Veg_id columna com la SERIE pseudotipus.

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

Sortida

El Verdures La taula s'ha creat correctament després d'executar les ordres anteriors, tal com es mostra a la captura de pantalla següent:

Serial PostgreSQL

Un cop el Verdures s'ha generat la taula, hi inserirem alguns valors mitjançant l'ordre INSERT i ometem el Veggies_id columna tal com es mostra a l'ordre següent:

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

Sortida

Tindrem el missatge següent en implementar l'ordre anterior: el valor s'ha inserit correctament al fitxer Verdures taula.

Serial PostgreSQL

O, també podem utilitzar el Per defecte paraula clau i utilitza la Veggie_id columna tal com es mostra a l'ordre següent:

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

Sortida

Després d'executar l'ordre anterior, obtindrem el missatge següent, que diu que o bé podem utilitzar Paraula clau predeterminada o el ignora el nom de la columna , obtindrem una sortida similar:

Serial PostgreSQL

Per tant, afegirem alguns valors més al Cotxes taula amb l'ajuda de la següent comanda:

 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'); 

Sortida

Després d'executar l'ordre anterior, obtindrem el missatge següent, que mostra que el valor s'ha inserit correctament al Verdures taula.

pila java
Serial PostgreSQL

Després de crear i inserir el Verdures valors de la taula, farem servir el SELECCIONA comanda per retornar totes les files del fitxer Verdures taula:

 SELECT * FROM Vegetables; 

Sortida

Després d'implementar correctament l'ordre anterior, obtindrem la següent sortida:

Serial PostgreSQL

Visió general

En el Pseudotip de sèrie PostgreSQL secció, hem après la funcionalitat de pseudotipus sèrie, que s'utilitza principalment per crear un augments automàtics valor de columna per a una taula concreta.