sql >> Databáze >  >> RDS >> PostgreSQL

Vytváření objektů Django a Postgresové sekvence

vše funguje dobře. Create() django nemá nic společného přímo s incementací sekvence. stručně:

  • postgresql auto incrementing (typ 'serial') je jen zkratka 'create sequence + create integerfield s výchozí hodnotou sekvence'
  • primární klíč automatického pole django (identifikátor, pokud jej neuvedete jinak) pouze vytváří sériové pole
  • když zadáte id ručně, postgres vloží hodnotu do databáze. když zadáte hodnotu, vynechá parametr 'default', což je správné chování.

takže pokud chcete, aby vaše inserty zvýšily sekvenci způsobem podle vašeho výběru, musíte ručně změnit hodnotu sekvence pomocí SELECT setval('název_sekvence', int_value); jinak ponechte hodnotu null a bude se zvyšovat automaticky – vyberte aktuální hodnotu a zvyšte ji o +1 (pokud není v definici sekvence uvedeno jinak).

další nápad je, že vytvoříte objekt a poté aktualizujete id (samozřejmě již nemůže být použito) a nakonec nastavíte hodnotu sekvence na maximální id.



  1. Nastavení postgresql hesla pomocí Vagrant/Chef-solo

  2. Spuštění/spuštění MySQL bez instalace na Windows

  3. Výkon Oracle CLOB

  4. Příklad Oracle UTL_HTTP Post Multipart/Form-Data (JSON &ZIP).