Após um mau funcionamento da máquina e uma transferência apressada de dados para outra máquina, de alguma forma acabamos com algumas sequências totalmente novas substituindo sequências antigas como suporte para colunas de identidade (e para algumas séries antigas).
Podemos usar RESET
as novas sequências com os valores máximos nas tabelas, e também usar ALTER SEQUENCE ... RENAME
para renomear as novas sequências com os nomes antigos (para contornar qualquer codificação no código do cliente), mas gostaria de saber se era possível trocar o antigo sequência de volta ao lugar?
serial
colunas são apenas um pacote de recursos do Postgres vagamente vinculados. Ver:É fácil trocar o subjacente
SEQUENCE
. E não há problema em fazer isso:serial
coluna eSEQUENCE
são “amigos com benefícios”, por assim dizer. Tabela e sequência possuem listas de controle de acesso (GRANT
privilégios) separadas, o que causa (causou) muita confusão.IDENTITY
colunas são a iteração SQL padrão posterior de (quase) o mesmo conceito. Aqui, oSEQUENCE
está mais intimamente ligado à suaIDENTITY
coluna. É um mero detalhe de implementação, como um índice único é um detalhe de implementação de umaPRIMARY KEY
restrição. Um “casamento”, por assim dizer. Não há listas ACL separadas. E não é correto trocar o queSEQUENCE
está por baixo, mesmo que ainda seja possível com privilégios de superusuário.Relacionado:
Todos os detalhes (incluindo comandos para manipular catálogos do sistema) nesta postagem de Peter Eisentraut, o autor original do
IDENTITY
recurso: