sql >> Base de Datos >  >> RDS >> PostgreSQL

Modificar el valor de inicio de Django AutoField

Formas de configurar/restablecer una secuencia en PostgreSQL

(no necesariamente a max(id) ).

  • Ahí está la forma simple que tienes en la pregunta. Puede configurar la secuencia para que comience en un número arbitrario con setval() :

    SELECT setval('tbl_id_seq');
    
  • Luego está la forma estándar de SQL con ALTER SEQUENCE haciendo lo mismo:

    ALTER SEQUENCE myseq RESTART WITH 1;
    
  • Si desea reiniciar sus secuencias en números distintos al predeterminado 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
    
  • Y hay otra forma, cuando vacías una tabla con TRUNCATE:

    TRUNCATE foo RESTART IDENTITY;
    

    Ejecuta implícitamente ALTER SEQUENCE foo_id_seq RESTART;