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