PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ändern Sie den Startwert von Django AutoField

Möglichkeiten zum Setzen / Zurücksetzen einer Sequenz in PostgreSQL

(nicht unbedingt auf max(id) ).

  • Es gibt den einfachen Weg, den Sie in der Frage haben. Sie können die Sequenz mit setval() so einstellen, dass sie bei einer beliebigen Nummer beginnt :

    SELECT setval('tbl_id_seq');
    
  • Dann gibt es den Standard-SQL-Weg mit ALTER SEQUENCE dasselbe tun:

    ALTER SEQUENCE myseq RESTART WITH 1;
    
  • Wenn Sie Ihre Sequenzen bei anderen Nummern als der Standardnummer 1 neu starten möchten:

    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
    
  • Und es gibt einen anderen Weg, wenn Sie eine Tabelle mit TRUNCATE leeren:

    TRUNCATE foo RESTART IDENTITY;
    

    Führt implizit ALTER SEQUENCE foo_id_seq RESTART; aus