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

Langage SQL Discussion :

Insert avec heritage


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut Insert avec heritage
    Bonjour à tous,

    Dans mon modèle, j'ai un héritage avec exclusion mutuelle.
    En 2 mots, ma table PERSONNE (ID, NOM, PRENOM) a 3 tables filles qui sont MEDECIN, PATIENT et INFIRMIERE, chacune avec des champs spécifiques bien entendu. L'ID de PERSONNE est automatiquement incrémenté.

    Or, si je fais directement un "INSERT INTO MEDECIN (nom, prenom, champ_spécifique)...", j'obtiens ce message d'erreur "Conflit entre l'instruction INSERT et la contrainte COLUMN FOREIGN KEY 'FK_MEDECIN_PERSONNE'".
    Je pensais naïvement que cela se répercutait directement sur la table mère PERSONNE...

    Comment puis-je faire?

    Par avance, merci de votre aide !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Tu peux créer une procédure stockée pour chaque spécialisation de PERSONNE qui ajoutera en même temps les données relative à la table PERSONNE et la table spécifique.

    Pour la suppression tu peux très bien activer la suppression en cascade sur les FK entre PERSONNE et les tables spécifiques.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    C'est fait et ça marche. Merci !

    Cependant, j'ai dû remplir à la fois les champs ID, Nom et Prénom de PERSONNE et de MEDECIN avec les mêmes valeurs. Du coup, quel est l'intérêt d'avoir utilisé un héritage? Ma table PERSONNE ne sert pas à grand chose finalement, et il y a des redondances...

    J'aurais raté un truc?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Oui, ne pas mettre de rubriques dans les tables de spécialisation qui sont déjà dans la table mère.

    La seule chose que tu dois garder est l'id qui fait la liaison entre les données communes (Personne) et les données spéciales (Médecin)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    yes!
    Je pensais qu'il y avait une autre manière de faire mais en tout cas, ça marche. Merci encore !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    alternant en formation LP BDD
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : alternant en formation LP BDD

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut
    Du coup, si j'ai une table Produit, avec comme champs id_produit, numero de serie etc.. et en table fille Copieur et Ordinateur le champs numero de serie n'apparait pas dans les tables filles?

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

Discussions similaires

  1. [INSERT][SELECT] insert avec un select imbriqué
    Par narmataru dans le forum SQL
    Réponses: 11
    Dernier message: 06/03/2013, 03h04
  2. [Procédure stockée]Insert avec renvoi clé primaire?
    Par busmik dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/08/2004, 16h14
  3. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  4. INSERT avec procédure stockée / Clef de type AutoInc
    Par bgdelphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/10/2003, 18h30
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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