Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

Contrainte UNIQUE fait sauter un ID lors d'un INSERT


Sujet :

Administration PostgreSQL

  1. #1
    Nouveau membre du Club
    Contrainte UNIQUE fait sauter un ID lors d'un INSERT
    Bonjour,

    J'ai intallé PostgreSQL dans un container docker, j'ai créer un DB qui contient une table Roles
    Requête de création :
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE Roles (
      roleId serial PRIMARY KEY NOT NULL,
      name varchar(20) NOT NULL UNIQUE
    );


    Comme vous pouvez le voir name est UNIQUE.
    J'ai voulut tester en faisant des requête INSERT (en ligne de commande) et je me suis rendu compte que lorsqu'on essaie d'insérer un name déjà existant, la DB "saute" l'ID (exemple dans le screen ci-dessous).
    Est-ce normal ou ai-je oublié de configurer quelque chose quelque part ?

    Petite question en plus : quand on fait un insert nous avons "INSERT 0 2" en retour, à quoi correspond le 0 ?

    Merci d'avance!
    P.S : débutant avec Postgré


  2. #2
    Membre expérimenté
    Bonjour,

    Selon vos tests l'instruction d'insert contenant 1 doublon est, comme attendu, en erreur.
    Vous pouvez aussi faire un test d'insertion de multiples valeurs dont une en doublon.

    Le retour d'insert correspondant au 0 est l'OID.
    Le savoir est une nourriture qui exige des efforts.

  3. #3
    Rédacteur

    Tous les systèmes d'auto incrément calculent les valeurs des auto-incréments en préalable à l'insertion. Une fois les lignes complétées avec les valeurs autoincrémentées, les lignes sont physiquement insérées et le système vérifie les contraintes telles que PK ou UNIQUE. En cas de viol de contrainte, la requête est rejetée mais comme les autoincrément ont été calculées, le système d'auto incrément reprend exactement là ou il en était.... De ce fait, certaines valeurs vont vous apparaître grillées.... Cela n'a aucune importance !

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.