IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

PHP & Base de données Discussion :

Une colonne ne peut avoir deux lignes avec la même valeur.


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2011
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 254
    Points : 119
    Points
    119
    Par défaut Une colonne ne peut avoir deux lignes avec la même valeur.
    Bonjour,

    Un site effectue une requête vers une page en lui transmettant des données. Ces données sont ensuite insérées dans une base de données, en vérifiant à chaque fois si la donnée n'est pas déjà insérée via un id unique associé à chaque donnée. Cela a l'air très basique mais je n'arrive pas à faire en sorte que l’insertion dans la base de données ne puisse se faire qu'une seule fois pour chaque id unique.

    En effet, j'ai constaté que parfois c'est inséré en double. Mon hypothèse est que dans de rares cas le site est ralenti ou la base de données trop utilisée. Les données sont alors réceptionnées par le site qui vérifie si elle ne sont pas déjà présente, ce qui n'est pas le cas. Avant que l'insertion dans la base de données soit faite, le site reçoit à nouveau les données, elles ne sont toujours pas présentes et sont alors enregistrées 2 fois.

    J'ai constaté qu'en général les enregistrements sont séparés d'une ou deux secondes.

    J'y réfléchis depuis un moment car ça a l'air simple mais je me retrouve à demander de l'aide car je ne sais vraiment pas comment procéder ...

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Séb.
    Profil pro
    Inscrit en
    mars 2005
    Messages
    3 998
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2005
    Messages : 3 998
    Points : 5 668
    Points
    5 668
    Par défaut
    Quelle est la définition du champ ID ?

    Montre-nous la définition de ta table tant qu'on y est
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 019
    Points : 28 212
    Points
    28 212
    Billets dans le blog
    2
    Par défaut
    La seule façon de garantir l'unicité d'une valeur dans une BDD c'est de mettre une contrainte unique sur la colonne ou le groupe de colonnes concernées.
    Cette contrainte peut être explicite (ajout du mot clef UNIQUE dans le DDL), ou implicite (dans le cas d'une contrainte PRIMARY KEY).
    Si l'unicité est contrôlée par traitement, alors des failles sont possibles, ne serait-ce qu'en raison des accès concurrents.

    A partir de là, le contrôle de doublon ne devrait pas être fait sur l'identifiant qui n'a qu'une vocation technique, mais sur une ou plusieurs colonnes fonctionnelles.

    Par exemple, dans une table des personnes physiques, je vérifie que le n° de sécurité sociale (sous réserve qu'il soit déclaré unique) est absent de la table
    S'il est absent, j'autorise l'insertion qui créera une nouvelle ligne dont la valeur d'identifiant technique sera nouvelle (et le plus souvent attribuée par le SFBD car c'est bien plus pratique)
    Si la combinaison existe déjà, je fais éventuellement des mises à jours d'autres attributs (situation maritale, orthographe du nom ou du prénom...)

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/05/2021, 22h41
  2. Réponses: 5
    Dernier message: 22/04/2021, 20h51
  3. Réponses: 4
    Dernier message: 29/06/2017, 23h49
  4. [XL-2016] fusionner les deux lignes avec le même nom dans une colonne
    Par methos01 dans le forum Excel
    Réponses: 4
    Dernier message: 27/03/2017, 16h26
  5. Réponses: 2
    Dernier message: 22/10/2015, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo