sql >> Database >  >> RDS >> PostgreSQL

Django-objecten maken en Postgres-reeksen

alles werkt prima. django's create() heeft niets rechtstreeks te maken met opeenvolging incementatie. kort:

  • postgresql auto incrementing('serial' type) is slechts een snelkoppeling van 'create sequence + create integerfield with sequence value as default'
  • django's primaire sleutel voor automatisch veld (idinteger indien niet anders gespecificeerd door u) maakt gewoon een serieel veld aan
  • wanneer u de id handmatig opgeeft, voegt postgres de waarde in de database in. wanneer u een waarde opgeeft, wordt de parameter 'default' weggelaten, wat een correct gedrag is.

dus als u wilt dat uw tussenvoegsels de reeks op een manier naar keuze verhogen, moet u de reekswaarde handmatig wijzigen met SELECT setval('sequence_name', int_value); laat het anders null en het zal automatisch toenemen - selecteer de huidige waarde en verhoog het met +1 (indien niet anders gespecificeerd in de reeksdefinitie).

een ander idee is dat je het object maakt en vervolgens de id bijwerkt (het kan natuurlijk niet al worden gebruikt) en uiteindelijk de reekswaarde instelt op de max id.



  1. Hoe kan ik het wachtwoord veilig opslaan in MySQL en authenticeren bij externe services?

  2. MySQL:Aantal records met opeenvolgende maanden

  3. Altijd versleutelde prestaties:een vervolg

  4. Geautomatiseerd testen van het upgradeproces voor PostgreSQL