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

SQL Procédural MySQL Discussion :

Clé étrangére (ou pas..) ?


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut Clé étrangére (ou pas..) ?
    Bonjour à tous,

    Comment puis-je faire pour que sur l'exemple ci-dessous, l'insertion de la ligne ayant pour id "48" ne soit pas possible :



    Sachant que ce que je veux faire, c'est qu'il soit impossible d'ajouter un enregistrement quand le champ X et le champ Y (les 2 en même temps) soient déjà existant (par exemple : id '46' et '48' impossible mais id '47' possible) ?

    Merci pour votre aide, bonne journée.

    Cdlt.

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Ajouter un enregistrement ou ?
    A première vue je vois ça en trigger mais avec plus d'information ça sera peut-être tout bête.

    Par contre attention il semble que ta table ne possède pas de clé primaire et ça c'est pas a faire

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    Ajouter un enregistrement dans cette table.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `ma_table` (`id` ,`nom` ,`X` ,`Y`)
    VALUES (NULL , 'test', '75', '75');
    Le champ ID est la clé primaire, en int et auto_increment.

    Sur l'image, je veux qu'il ne soit pas possible d'ajouter la ligne qui a pour ID 48 car X et Y sont déjà utilisés à la ligne ID 46.
    Alors que la 47 est valide quand à elle.

    Pas très clair je sais mais je vois pas comment expliquer autrement

  4. #4
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Dans ce cas si tu travail avec MySQL 5 je te conseil de poster un trigger a BEFORE INSERT sur cette table, puis de vérifier si les deux champs on déjà une présence dans la table.
    Puis tu génère une exception en cas d'égalité de X et Y.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Bonjour,

    Et en créant une clé unique, il suffirait alors de faire un insert ignore ou un insert on duplicate key ?

    Bonne journée
    MS

  6. #6
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    Je pense que la solution apporté par MarcS est la plus adaptée.
    une clé unique composé de deux champs et hop

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout de clé étrangère fonctionne pas
    Par sorachan26 dans le forum Développement
    Réponses: 2
    Dernier message: 25/08/2011, 08h43
  2. Clé étrangère et CASCADE ne fonctionne pas (MySQL 5.0)
    Par ctobini dans le forum Administration
    Réponses: 3
    Dernier message: 07/11/2007, 15h44
  3. Clé étrangère pas prise en compte..
    Par Whinespirit dans le forum Outils
    Réponses: 8
    Dernier message: 04/09/2007, 14h35
  4. Réponses: 2
    Dernier message: 29/07/2007, 11h48
  5. [SQL Server][ASP.net] clefs étrangères qui ne se propagent pas
    Par skystef dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/12/2006, 11h56

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