sql >> Databasteknik >  >> RDS >> PostgreSQL

Ändra startvärdet för Django AutoField

Sätt att ställa in/återställa en sekvens i PostgreSQL

(inte nödvändigtvis till max(id) ).

  • Det är det enkla sättet du har i frågan. Du kan ställa in sekvensen så att den börjar på ett godtyckligt tal med setval() :

    SELECT setval('tbl_id_seq');
    
  • Sedan finns det standard-SQL-sättet med ALTER SEQUENCE gör samma sak:

    ALTER SEQUENCE myseq RESTART WITH 1;
    
  • Om du vill starta om dina sekvenser med andra nummer än standard 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
    
  • Och det finns ett annat sätt, när du tömmer en tabell med TRUNCATE:

    TRUNCATE foo RESTART IDENTITY;
    

    Exekverar implicit ALTER SEQUENCE foo_id_seq RESTART;




  1. Identifiera materialstycksstrukturen (BOM) i databaser

  2. Mysql ordning efter specifika ID-värden

  3. Hur man beställer efter datum i PostgreSQL eller Oracle

  4. Upptäck dubbletter av objekt i rekursiv CTE