O Postgres 10 traz uma implementação do recurso padrão SQL GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
, conhecido como coluna de identidade . Este recurso suplanta o próprio SERIAL
pseudo-tipo do Postgres, eliminando seus problemas/problemas. Para mais informações, veja aqui e aqui .
Uma das principais razões para GENERATED…
ser superior a SERIAL
é que o gerador de números de sequência é tratado em segundo plano de forma transparente. Podemos adicionar a coluna, ajustar o número de sequência atual e descartar a coluna, tudo sem nos referirmos explicitamente à sequência.
CREATE TABLE tbl (
col BIGINT
GENERATED ALWAYS AS IDENTITY
PRIMARY KEY ,
col2 text
)
;
E…
ALTER TABLE tbl
ALTER COLUMN col
RESTART WITH 1000
;
E…
ALTER TABLE tbl
ALTER COLUMN col
DROP IDENTITY IF EXISTS
;
Ou…
ALTER TABLE tbl
ALTER COLUMN col
DROP COLUMN IF EXISTS
;
Observe como em nenhum desses códigos de exemplo nos referimos a um objeto gerador de sequência específico.
Presumo que esse recurso seja implementado usando o recurso Sequence existente no Postgres.
➠ Como consultamos essa sequência de fundo? Como perguntamos qual será o último/próximo valor gerado? Qual é o equivalente das funções de manipulação de sequência ?
Parece que você usa as mesmas funções de antes:
https://www.postgresql.org/docs/10/static/functions-info.html