Gostaria de forçar o campo de incremento automático de uma tabela para algum valor, tentei com isso:
ALTER TABLE product AUTO_INCREMENT = 1453
E
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
Eu sou novo no postgres :(
Eu tenho uma mesa product
com Id
e name
campo
Respostas:
Se você criou a tabela
product
com umaid
coluna, a sequência não é simplesmente chamadaproduct
, mas simproduct_id_seq
(ou seja,${table}_${column}_seq
).Este é o
ALTER SEQUENCE
comando que você precisa:Você pode ver as seqüências no seu banco de dados usando o
\ds
comando psql. Se você fizer\d product
e observar a restrição padrão para sua coluna, anextval(...)
chamada também especificará o nome da sequência.fonte
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
onde "seq" é o texto literal e você coloca um número para #. Não negligencie os sublinhados. :-)ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, deveriaRESTART WITH 1454
.Aqui está o comando que você está procurando, supondo que sua sequência para a tabela do produto seja product_id_seq:
fonte
O comando a seguir faz isso automaticamente para você: Isso também excluirá todos os dados da tabela. Por isso tem cuidado.
fonte
TABLE
palavra-chave é redundante.TRUNCATE someTable RESTART IDENTITY;
basta.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Para definir o contador de sequência:
Se você não souber o nome da sequência, use a
pg_get_serial_sequence
função:Os parâmetros são o nome da tabela e o nome da coluna.
Ou basta emitir um
\d product
nopsql
prompt:fonte
- Alterar o valor inicial da sequência
Mesmo mas dinâmico:
Concordo que o uso de um SELECT é perturbador, mas funciona.
Fonte: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
fonte
brew services restart postgresql
Convertido de comentário por uma questão de conveniência do visitante
Não está claro nesta mensagem qual é a sintaxe correta. Isto é:
fonte
Se você deseja redefinir o incremento automático a partir da GUI, siga estas etapas.
fonte
Se você tiver uma tabela com uma coluna IDENTITY que deseja redefinir o próximo valor, poderá usar o seguinte comando:
fonte
sequence
ou você NÃO pode truncar a tabela. Eu acho que é a melhor respostaPara redefinir o incremento automático, é necessário obter o nome da sequência usando a seguinte consulta.
Sintaxe:
Exemplo:
A consulta retornará o nome da sequência de autoid como "Demo_autoid_seq". Em seguida, use a seguinte consulta para redefinir o autoid
Sintaxe:
Exemplo:
fonte
Para obter o ID da sequência, use
Isso fornecerá o ID do seque como tableName_ColumnName_seq
Para obter o último número de semente, use
ou se você souber o ID da sequência, use-o diretamente.
Isso lhe dará o último número de semente
Para redefinir o número da semente, use
fonte
Use esta consulta para verificar o que é a chave de sequência com esquema e tabela,
Use esta consulta para aumentar o valor do incremento, um por um,
Ao inserir na tabela, o próximo valor incrementado será usado como a chave (111).
Use esta consulta para definir um valor específico como o valor incrementado
Ao inserir na tabela, o próximo valor incrementado será usado como chave (121).
fonte
Observe que se você tiver um nome de tabela com '_', ele será removido no nome da sequência.
Por exemplo, nome da tabela: coluna user_tokens: id Nome da sequência: usertokens_id_seq
fonte