Com restablir una seqüència a PostgreSQL

Com Restablir Una Sequencia A Postgresql



L'ús de la seqüència PostgreSQL és una manera eficaç de treballar amb un valor d'increment automàtic, especialment per a les claus primàries. Quan el valor inicial no està definit, l'increment automàtic per a INT començarà a 0. Tanmateix, podeu especificar quin valor inicial utilitzareu per a la seqüència a la columna d'increment automàtic.

A més, si trobeu una situació que requereixi canviar el valor següent de la seqüència, podeu restablir ràpidament la seqüència i especificar amb quin valor començar per a la següent entrada de la taula. Tots els detalls que hauríeu de saber sobre com restablir una seqüència a PostgreSQL es detallen en aquesta publicació. Fes un cop d'ull!

Exemple sobre com restablir una seqüència a PostgreSQL

Amb una columna INT, podeu crear una seqüència d'increment automàtic i utilitzar-la com a clau primària per a la vostra taula. D'aquesta manera, no haureu d'introduir els seus valors quan executeu una consulta INSERT, ja que els valors enters es generaran automàticament. Quan es crea la seqüència, l'ordre ALTER SEQUENCE us permet reiniciar la seqüència i especificar un nou valor inicial per a les noves entrades.







Per a aquest exemple, treballarem amb la següent taula 'user_details'. El nostre focus és la columna 'user_id', que és una seqüència d'increment automàtic que comença a 100.





Per llistar les diferents seqüències de la vostra base de dades, executeu l'ordre següent:





\ds

Per al nostre cas, ens orientem a la seqüència 'user_id'.



Per obtenir més detalls sobre la seqüència, executeu la consulta 'seleccioneu' tal com es mostra a continuació:

SELECT * FROM nom_seqüència;

Podem veure que l'últim valor de la seqüència existent és 104. Reiniciem aquest valor i definim un nou valor que tindran les noves entrades.

Per restablir la seqüència de PostgreSQL, utilitzeu l'ordre següent:

ALTER SEQUENCE nom_seqüència RESTART WITH valor;

Per al nostre cas, diguem que volem reiniciar la seqüència i iniciar les noves entrades a 20. Després d'executar la següent comanda, obtenim una sortida, com es mostra a continuació, que confirma que la seqüència s'ha alterat.

Si tornem a executar l'ordre anterior per obtenir els detalls de la nostra seqüència mitjançant la instrucció SELECT, podem veure que el nou 'últim_valor' per a aquest cas és el valor que vam especificar amb l'ordre ALTER.

Inseriu una nova entrada a la nostra taula per veure què passa. La imatge següent mostra la consulta INSERT i els resultats que obtenim després d'executar la instrucció SELECT. Observeu com la nova entrada té el seu 'user_id' establert a 20. Totes les entrades noves que fem tindran el seu 'user_id' generat en funció de l'últim valor que és 20.

Si fem una altra entrada, el seu “user_id” serà 21 i la seqüència continuarà amb la mateixa lògica. Així és com reinicieu una seqüència a PostgreSQL. Tingueu en compte que l'ordre 'restabliment' no afecta els registres existents. Només defineix el nou valor inicial per a les entrades que feu després de restablir la seqüència.

Conclusió

Amb PostgreSQL, tenir una manera de generar automàticament els valors enters a la columna de clau primària simplifica les coses. Quan teniu una seqüència existent, podeu utilitzar l'ALTER SEQUENCE
comanda amb l'opció RESTART WITH per especificar quina seqüència voleu restablir i quin valor definir com a darrer valor de la seqüència. D'aquesta manera, les noves entrades tindran el valor enter generat en funció del nou darrer valor. Consulteu l'exemple presentat per entendre com funciona el restabliment d'una seqüència PostgreSQL.