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 Oracle Discussion :

oracle 10g,inserer des données dans trois tables a la fois


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Points : 26
    Points
    26
    Par défaut oracle 10g,inserer des données dans trois tables a la fois
    bonjours,
    je travail sous oracle10g, et ja'i un petit probléme
    en fait je veux insérer des données dans 3 tables differentes a la fois ,
    une de ces tables,contient les clés étrangéres qui référencient les autres tables, mais je ne sais pas comment le faire que ce soit en requéte ou en vue ou procedure . voici mes trois tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    DEMANDE_ABONNEMENT
    (
      NUMDEMABON     NUMBER,
      ADRESLOCALAB   VARCHAR2(20 BYTE),
      VILLELOCALAB   VARCHAR2(20 BYTE),
      CODETYPEREGAB  NUMBER,
      CODETYPEDEMAB  NUMBER,
      CODECLIE       NUMBER
    )
     
     
    TYPE_DEMANDE_ABONNEMENT
    (
      CODETYPEDEMAB  NUMBER,
      LIBTYPEDEAB    VARCHAR2(20 BYTE)
    )
     
    TYPE_REGLEMENT_ABONNEMENT
    (
      CODETYPEREGAB  NUMBER,
      LIBTYPREGAB    VARCHAR2(1 BYTE)
    )
    et pour créer les clé étrangéres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ALTER TABLE DEMANDE_ABONNEMENT ADD (
      CONSTRAINT FK_DEMAB_CLIENT FOREIGN KEY (CODECLIE) 
        REFERENCES CLIENT (CODECLIE));
     
    ALTER TABLE DEMANDE_ABONNEMENT ADD (
      CONSTRAINT FK_DEMAB_TYPEDEAB FOREIGN KEY (CODETYPEDEMAB) 
        REFERENCES TYPE_DEMANDE_ABONNEMENT (CODETYPEDEMAB));
     
    ALTER TABLE DEMANDE_ABONNEMENT ADD (
      CONSTRAINT FK_DEMAB_TYPERAGAB FOREIGN KEY (CODETYPEREGAB) 
        REFERENCES TYPE_REGLEMENT_ABONNEMENT (CODETYPEREGAB));
    j'ai aussi créer des sequences pour chaque tables pour que les code(id) soit diferents(valeurs).

    2-une derniere question en faite je veux créer un champs sur ma tables DEMANDE_ABONNEMENT sou le nom " date demande abonnement"
    qui doit prendre a l'insertion des données la date courante du systeme..comment faire ceci???
    merci d'avance.

  2. #2
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    1-Pour la 1 ère question, tu peux utiliser les TRIGGERS.

    2-Dans l'insertion utiliser sysdate() pour avoir la date courante du système.

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    et pourquoi pas 3 ordres qui se suivent ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    oui mais comment faire trois ordre qui se suivent?? est ce que vous avez un exmple??
    et pour la création du tigger est ce que vous avez un exemple
    ??
    merci

  5. #5
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    Voici un exemple d'un trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    --Pour chaque insertion  dans la table A, on fait une autre insertion dans la table B
     CREATE TRIGGER trigger_insertion_on_A
     AFTER INSERT ON table_A
     FOR EACH ROW
     INSERT INTO table_B VALUES(:NEW.Filed_B, :NEW.Field_a);
     END;

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par anaaa
    oui mais comment faire trois ordre qui se suivent??
    bah :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO tab1... ;
     
    INSERT INTO tab2... ;
     
    INSERT INTO tab3... ;
     
    commit;

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    ok merci je viens de trouver un exemples: en fait il faut inserer d'abord celles qui ne sont pas dépendantes et seulement après celle qui en dépendent. c'est compris
    une autre question qui me dérange c'est que en fait je veux inserer que dans 3 tables que je vous ai montrere au debut .celle qui contient les foreing keys elle contient un foreing key d'une table CLIENT,cette table est déja remplie
    donc au moment de l'insertion des données dans la tables DEMANDE_ABONNEMENT que dois je faire pour le le champs(foreing key) CODECLIE
    je fait en fait l'insertion depuis un formulaire en jsp(cad les données saisie seront inserer dans les trois tables )
    merci

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bah tu remplis ton champ avec une des valeurs de la table CLIENT... j'comprends pas bien le problème

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    je crois que vous n'avez pas compris mon probléme
    en fait moi je ne vais pas faire un insertion directement sous oracle avec une requéte
    je vais faire cette insertion au sein d'un code java (une application)
    la table client contient les champs suivant:CODECLIE(clé primaire),et LOGUTILISATEUR(login)
    donc il faut que j' insere les données saisient par l'utilisateur sur ces trois tables where LOGUTILISATEUR="une valuer"mon formulaire ne contient pas CODECLIE (l'utilisateur ne va pas donner son codeclie)
    donc comment le foreign key dans la table DEMANDE_ABONNEMENT peut étres remplie automatiquement sans lui donner une valeurs dans la requéte je j'espére que vus avez compris ma question
    merci

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    oui, bah c'est dans ton appli que tu dois récupérer la valeur et ensuite dans ton écran tu la copies dans un champ caché ou un truc du genre (je ne connais rien au java )

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    ok merci infiniment pour votre aide

  12. #12
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu peux aussi déférrer tes contraintes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE DEMANDE_ABONNEMENT ADD (
      CONSTRAINT FK_DEMAB_CLIENT FOREIGN KEY (CODECLIE) 
        REFERENCES CLIENT (CODECLIE) deferrable initially deferred);
    comme ça c'est seulement lors du COMMIT que la contrainte sera validée

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

Discussions similaires

  1. Inserer des données dans une table
    Par csilas dans le forum C#
    Réponses: 9
    Dernier message: 12/11/2009, 16h07
  2. [PDO] Inserer des données dans une table
    Par Dj_xXx dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/10/2008, 16h28
  3. [XI] Inserer des données dans une Table depuis CRXI
    Par jouberts dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 10/07/2007, 09h21
  4. [debutant]inserer des données dans une table
    Par khayate dans le forum VB.NET
    Réponses: 15
    Dernier message: 06/06/2007, 09h02
  5. Inserer des données dans une table access SQL
    Par ouellet5 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2005, 21h11

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