Identificare le sequence in PostgreSQL

Mattepuffo's logo
Identificare le sequence in PostgreSQL

Identificare le sequence in PostgreSQL

Una delle cose che mi piace meno di PostgreSQL è la gestione dei campi auto incrementali, che in pratica vengono gestiti con le sequence.

Di sicuro avranno i loro in vantaggi, ma mi è capitato spesso di non averle allineate.

Quindi, se ad un certo punto volessimo vedere quali sequence abbiamo?

Per visualizzare quella relativa ad una tabella/campo:

SELECT pg_get_serial_sequence('TABELLA', 'CAMPO');

Se invece vogliamo visualizzare tutte quelle del database con la tabella collegata:

SELECT t.relname AS table_name,
       a.attname AS column_name,
       s.relname AS sequence_name
FROM pg_class s
         JOIN pg_depend d ON d.objid = s.oid
         JOIN pg_class t ON d.refobjid = t.oid
         JOIN pg_attribute a ON d.refobjid = a.attrelid AND d.refobjsubid = a.attnum
WHERE s.relkind = 'S'
ORDER BY s.relname;

Infine per visualizzare un mero elenco:

SELECT * FROM information_schema.sequences
ORDER BY sequence_name;

Enjoy!


Condividi

Commentami!