PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Modifica il valore iniziale di Django AutoField

Modi per impostare/reimpostare una sequenza in PostgreSQL

(non necessariamente a max(id) ).

  • C'è il modo semplice che hai nella domanda. Puoi impostare la sequenza in modo che inizi da un numero arbitrario con setval() :

    SELECT setval('tbl_id_seq');
    
  • Poi c'è il metodo SQL standard con ALTER SEQUENCE facendo lo stesso:

    ALTER SEQUENCE myseq RESTART WITH 1;
    
  • Se desideri riavviare le sequenze con numeri diversi da quello predefinito 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 c'è un altro modo, quando svuoti una tabella con TRUNCATE:

    TRUNCATE foo RESTART IDENTITY;
    

    Esegue implicitamente ALTER SEQUENCE foo_id_seq RESTART;