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 :

Insertion dans trois tables


Sujet :

SQL Oracle

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut Insertion dans trois tables
    Bonjour a toutes et a tous ,
    j'essaye de faire une requete d'insertion dans trois table T1(id1, champ1) T2(id2, champ2), T3(id3, champ3, id1, id2) les id1, id2 sont des clés etrangeres
    mais je ne sais pas trop comment faire, j'ai fait
    insert into T1(id1, champ1) values('id1', 'champ1');
    insert into T2(id2, champ2) values('id2', 'champ2');
    insert into T3(id3, champ3, id1, id2) values('id3','champ3', 'id1', 'id2' );
    mais ca ne marche pas !!!
    j'ai essayé de passer des valeurs mais j'ai eu une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    violation de contrainte d'intégrité (T3_FK) - clé parent introuvable
    si vous avez une idée comment je dois faire je vous serai reconnaissante,
    merci.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez peut-être une erreur à l'insertion dans T1 que vous n'avez pas vue.

    Ou peut-être avez-vous mal déclaré "T3_FK" (sur id3 au lieu de id1 par exemple) ?

    Ou peut-être encore vous êtes en rollback automatique ?

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    mais est ce que de point de vu syntaxe c'est juste ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    quand j'ai verifiée , l'insertion se fait uniquement dans la table T1 !!

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Le problème est au niveau de la table 2.

    Peux tu nous poster le script de création de tes tables ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    le script de la TABLE1
    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
     
     
    CREATE TABLE  "TABLE1" 
       (	"ID1" NUMBER NOT NULL ENABLE, 
    	"CHAMP1" VARCHAR2(4000), 
    	 CONSTRAINT "TABLE1_PK" PRIMARY KEY ("ID1") ENABLE
       )
    /
     
    CREATE OR REPLACE TRIGGER  "BI_TABLE1" 
      before insert on "TABLE1"               
      for each row  
    begin   
      if :NEW."ID1" is null then 
        select "TABLE1_SEQ".nextval into :NEW."ID1" from dual; 
      end if; 
    end; 
     
    /
    ALTER TRIGGER  "BI_TABLE1" ENABLE
    /
    pour la TABLE2

    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
     
     
    CREATE TABLE  "TABLE2" 
       (	"ID2" NUMBER NOT NULL ENABLE, 
    	"CHAMP2" VARCHAR2(4000), 
    	 CONSTRAINT "TABLE2_PK" PRIMARY KEY ("ID2") ENABLE
       )
    /
     
    CREATE OR REPLACE TRIGGER  "BI_TABLE2" 
      before insert on "TABLE2"               
      for each row  
    begin   
      if :NEW."ID2" is null then 
        select "TABLE2_SEQ".nextval into :NEW."ID2" from dual; 
      end if; 
    end; 
     
    /
    ALTER TRIGGER  "BI_TABLE2" ENABLE
    /
    pour la TABLE3:

    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
    24
    25
    26
    27
    28
    29
     
    CREATE TABLE  "TABLE3" 
       (	"ID3" NUMBER NOT NULL ENABLE, 
    	"DATE" DATE, 
    	"NB" NUMBER, 
    	"ID1" NUMBER, 
    	"ID2" NUMBER, 
    	 CONSTRAINT "TABLE3_PK" PRIMARY KEY ("ID3") ENABLE
       )
    /
    ALTER TABLE  "TABLE3" ADD CONSTRAINT "TABLE3_FK" FOREIGN KEY ("ID1")
    	  REFERENCES  "TABLE1" ("ID1") ON DELETE CASCADE ENABLE
    /
    ALTER TABLE  "TABLE3" ADD CONSTRAINT "TABLE3_FK2" FOREIGN KEY ("ID2")
    	  REFERENCES  "TABLE2" ("ID2") ON DELETE CASCADE ENABLE
    /
     
    CREATE OR REPLACE TRIGGER  "BI_TABLE3" 
      before insert on "TABLE3"               
      for each row  
    begin   
      if :NEW."ID3" is null then 
        select "TABLE3_SEQ".nextval into :NEW."ID3" from dual; 
      end if; 
    end; 
     
    /
    ALTER TRIGGER  "BI_TABLE3" ENABLE
    /

    je precise que les tables sont crées dans APEX.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Par défaut
    Citation Envoyé par felosa Voir le message
    quand j'ai verifiée , l'insertion se fait uniquement dans la table T1 !!
    As-tu un message d'erreur lorsque tu essayes d'insérer dans la table T2?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    voila mon test d'insertion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    BEGIN
       insert into TABLE3(Id3, DATE, NB, ID1, ID2) values('2' , :P8_DATE, :P8_NB, '1', '1' );
     insert into TABLE1(ID1, CHAMP1) values('1', :P8_CHAMP1);
    insert into TABLE2(ID2, CHAMP2) values
    ('1', :P8_CHAMP2); 
     EXCEPTION
       When OTHERS then
       htp.p(SQLCODE || ' : ' ||SQLERRM); 
    END;

Discussions similaires

  1. [ZEOSLIB] Problème Insertion dans une table
    Par moscovisci dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/06/2005, 12h05
  2. [interbase6]probleme d'insertion dans une table
    Par macadam314 dans le forum Bases de données
    Réponses: 10
    Dernier message: 22/02/2005, 14h21
  3. [Sybase] Temps d'une insertion dans une table
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 14/02/2005, 10h04
  4. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  5. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24

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