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

Développement SQL Server Discussion :

Héritage : insertion de données dans la table fille


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste développeur
    Inscrit en
    février 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : février 2021
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Héritage : insertion de données dans la table fille
    Bonjour,

    Je souhaite savoir comment insérer les données dans une table fille (dans le cadre d'un héritage).

    Merci à tous ce qui m'aideront sur la question.


  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    20 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 675
    Points : 48 998
    Points
    48 998
    Billets dans le blog
    1
    Par défaut
    Il faut commencer par insérer dans la table mère, récupérer l'id avec SCOPE_IDENTITY() puis insérer dans la table fille le reste des données.

    Une autre solution consiste à utiliser une vue et un déclencheur INSTEAD OF, voir la clause OUTPUT si plusieurs lignes doivent être insérées de manière simultanée.


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2006
    Messages : 7 495
    Points : 28 582
    Points
    28 582
    Billets dans le blog
    16
    Par défaut
    Bonsoir ttalbima,


    L’entité-type DONNEE est dotée du seul attribut idDonnee, qui est un auto increment (identity si SQL Server). La donnée correspondante est artificielle et vous n’en avez pas la maîtrise : au fil des incidents, des restaurations, réorganisations et autres impedimenta, il peut y a voir du grabuge dans les clés primaires de la table.

    Si ça n’est pas déjà fait, il faudrait définir une donnée naturelle (c’est-à-dire dont vous avez la pleine maîtrise, en en fournissant vous-même les valeurs), qui soit une clé alternative pour la table DONNEE, par exemple un code, comme ci-dessous :


    CREATE TABLE DONNEE
    (
            idDonnee    INT IDENTITY
          , codeDonnee  CHAR(4)  NOT NULL
        , CONSTRAINT DONNEE_PK PRIMARY KEY (idDonnee)
        , CONSTRAINT DONNEE_AK UNIQUE (codeDonnee)
    ) ;
    
    CREATE TABLE SUIVI_FLACONS
    (
            idDonnee        INT          NOT NULL
          , raisonControle  VARCHAR(30)  NOT NULL
          , etc             VARCHAR(30)  NOT NULL
        , CONSTRAINT SUIVI_FLACONS_PK PRIMARY KEY (idDonnee)
        , CONSTRAINT SUIVI_FLACONS_DONNEE_FK FOREIGN KEY (idDonnee)
              REFERENCES DONNEE (idDonnee)
    ) ;

    Un bout de jeu d’essai :

    INSERT INTO DONNEE (codeDonnee)
    VALUES
        ('d001'), ('d002'), ('d003')
    ;
    SELECT codeDonnee FROM DONNEE ; 
    =>

    codeDonnee
    ----------
    d001
    d002
    d003 

    INSERT INTO SUIVI_FLACONS (idDonnee, raisonControle, etc)
    VALUES
        ((SELECT idDonnee FROM DONNEE WHERE codeDonnee = 'd001'), 'raison x', 'etc. a')
      , ((SELECT idDonnee FROM DONNEE WHERE codeDonnee = 'd002'), 'raison y', 'etc. b')
      , ((SELECT idDonnee FROM DONNEE WHERE codeDonnee = 'd003'), 'motif m1', 'etc. etc.')
    ;
    
    SELECT codeDonnee, raisonControle, etc  
    FROM   SUIVI_FLACONS as x
      JOIN DONNEE as y ON x.idDonnee = y.idDonnee ;
    =>

    codeDonnee raisonControle                 etc
    ---------- ------------------------------ --------------
    d001       raison x                       etc. a
    d002       raison y                       etc. b
    d003       motif m1                       etc. etc. 

    Observez qu’on n’a absolument pas utilisé les valeurs de l’attribut idDonnee, mais plutôt celles de l’attribut codeDonnee.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.

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

Discussions similaires

  1. Insertion de données dans 2 tables différentes.
    Par anthony_rexis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2007, 10h29
  2. Insertion de données dans différentes tables.
    Par zeugzeug dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 21/04/2007, 21h00
  3. insertion de donnée dans une table (2 bd)
    Par robert_trudel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2007, 17h41
  4. Réponses: 5
    Dernier message: 26/01/2007, 08h11
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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