PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Création d'objets Django et séquences Postgres

tout fonctionne bien. Le create() de django n'a rien à voir directement avec l'accélération de la séquence. brièvement :

  • L'incrémentation automatique de postgresql (type 'série') est juste un raccourci de 'créer une séquence + créer un champ entier avec la valeur de séquence par défaut'
  • La clé primaire de champ automatique de django (idinteger si vous ne l'avez pas spécifié autrement) crée simplement un champ de série
  • lorsque vous spécifiez l'identifiant manuellement, postgres insère la valeur dans la base de données. lorsque vous spécifiez une valeur, elle omet le paramètre 'default', ce qui est un comportement correct.

donc, si vous voulez que vos insertions incrémentent la séquence de la manière de votre choix, vous devez modifier manuellement la valeur de la séquence en utilisant SELECT setval('sequence_name', int_value); sinon, laissez-le nul et il s'incrémentera automatiquement - sélectionnez la valeur actuelle et incrémentez-la de +1 (si elle n'est pas spécifiée différemment dans la définition de la séquence).

une autre idée est de créer l'objet, puis de mettre à jour l'identifiant (bien sûr, il ne peut pas déjà être utilisé) et à la fin de définir la valeur de séquence sur l'identifiant maximum.