PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Modifier la valeur de départ de Django AutoField

Méthodes pour définir/réinitialiser une séquence dans PostgreSQL

(pas nécessairement à max(id) ).

  • Il y a le moyen simple que vous avez dans la question. Vous pouvez définir la séquence pour qu'elle commence à un nombre arbitraire avec setval() :

    SELECT setval('tbl_id_seq');
    
  • Ensuite, il y a la méthode SQL standard avec ALTER SEQUENCE faire de même :

    ALTER SEQUENCE myseq RESTART WITH 1;
    
  • Si vous souhaitez redémarrer vos séquences à des numéros autres que le 1 par défaut :

    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
    
  • Et il existe un autre moyen, lorsque vous videz une table avec TRUNCATE :

    TRUNCATE foo RESTART IDENTITY;
    

    Exécute implicitement ALTER SEQUENCE foo_id_seq RESTART;