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!
database postgresql pg_get_serial_sequence pg_class
Commentami!