PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tworzenie obiektów Django i sekwencje Postgres

wszystko dziala. Create() w django nie ma nic wspólnego z bezpośrednim incementacją sekwencji. krótko:

  • postgresql auto incrementing (typ „serial”) to po prostu skrót „utwórz sekwencję + utwórz pole całkowite z domyślną wartością sekwencji”
  • Klucz podstawowy autopola django (identyfikator, jeśli nie został określony przez Ciebie) po prostu tworzy pole szeregowe
  • Kiedy określisz identyfikator ręcznie, postgres wstawi wartość do bazy danych. po określeniu wartości pomijany jest parametr „default”, który jest prawidłowym zachowaniem.

więc jeśli chcesz, aby Twoje wstawki zwiększały sekwencję w wybrany przez Ciebie sposób, musisz ręcznie zmienić wartość sekwencji za pomocą SELECT setval('sequence_name', int_value); w przeciwnym razie pozostaw wartość null, a będzie inkrementowana automatycznie - wybierz bieżącą wartość i zwiększ ją o +1 (jeśli nie określono inaczej w definicji sekwencji).

innym pomysłem jest utworzenie obiektu, a następnie zaktualizowanie identyfikatora (oczywiście nie można go już użyć), a na końcu ustawisz wartość sekwencji na maksymalny identyfikator.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie Postgres sprawdzające ciąg znaków jest liczbą

  2. Jak korzystać z przygotowanych wyciągów z Postgresem

  3. Przesyłaj dane między bazami danych za pomocą PostgreSQL

  4. Jak podzielić imię na nazwisko i inicjały?

  5. ValueError:Nie można rzutować DatetimeIndex na dtype datetime64[us]