AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 338533
Accepted
John Denniston
John Denniston
Asked: 2024-04-11 17:20:46 +0800 CST2024-04-11 17:20:46 +0800 CST 2024-04-11 17:20:46 +0800 CST

É possível alterar a sequência que sustenta uma coluna de identidade?

  • 772

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 RESETas novas sequências com os valores máximos nas tabelas, e também usar ALTER SEQUENCE ... RENAMEpara 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?

postgresql
  • 1 1 respostas
  • 17 Views

1 respostas

  • Voted
  1. Best Answer
    Erwin Brandstetter
    2024-04-12T07:10:36+08:002024-04-12T07:10:36+08:00

    serialcolunas são apenas um pacote de recursos do Postgres vagamente vinculados. Ver:

    • Criando uma sequência PostgreSQL para um campo (que não é o ID do registro)
    • Renomeie tabelas com segurança usando colunas de chave primária serial

    É fácil trocar o subjacente SEQUENCE. E não há problema em fazer isso:

    ALTER TABLE tbl ALTER COLUMN tbl_id
    SET DEFAULT nextval('the_old_seq');
    
    ALTER SEQUENCE the_old_seq OWNED BY tbl.tbl_id;  -- optional, really
    
    -- possibly drop the other sequence that just got ousted?
    -- but make sure it's not used by anything else
    

    serialcoluna e SEQUENCEsão “amigos com benefícios”, por assim dizer. Tabela e sequência possuem listas de controle de acesso ( GRANTprivilégios) separadas, o que causa (causou) muita confusão.

    IDENTITYcolunas são a iteração SQL padrão posterior de (quase) o mesmo conceito. Aqui, o SEQUENCEestá mais intimamente ligado à sua IDENTITYcoluna. É um mero detalhe de implementação, como um índice único é um detalhe de implementação de uma PRIMARY KEYrestrição. Um “casamento”, por assim dizer. Não há listas ACL separadas. E não é correto trocar o que SEQUENCEestá por baixo, mesmo que ainda seja possível com privilégios de superusuário.

    Relacionado:

    • Como alterar o ID de uma tabela de serial para identidade?

    Todos os detalhes (incluindo comandos para manipular catálogos do sistema) nesta postagem de Peter Eisentraut, o autor original do IDENTITYrecurso:

    • https://www.2ndquadrant.com/en/blog/postgresql-10-identity-columns/
    • 0

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve