PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Modifique o valor inicial do Django AutoField

Maneiras de definir/redefinir uma sequência no PostgreSQL


(não necessariamente para max(id) ).

  • Há a maneira simples que você tem na pergunta. Você pode definir a sequência para iniciar em um número arbitrário com setval() :
    SELECT setval('tbl_id_seq');
    

  • Depois, há o modo SQL padrão com ALTER SEQUENCE fazendo o mesmo:
    ALTER SEQUENCE myseq RESTART WITH 1;
    

  • Se você gosta de reiniciar suas sequências em números diferentes do padrão 1:
    CREATE TABLE foo(id serial, a text);      -- creates sequence "foo_id_seq"
    INSERT INTO foo(a) VALUES('a');           -- seq. starts with --> 1
    
    ALTER SEQUENCE foo_id_seq START WITH 10;  -- doesn't restart sequence
    INSERT INTO foo(a) VALUES('b');           --> 2
    
    ALTER SEQUENCE foo_id_seq RESTART;        -- restarts sequence
    INSERT INTO foo(a) VALUES('c');           --> 10
    

  • E há outra maneira, quando você esvazia uma tabela com TRUNCATE:
    TRUNCATE foo RESTART IDENTITY;
    

    Executa implicitamente ALTER SEQUENCE foo_id_seq RESTART;