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 :

Probleme d'insertion dans la base de données distante


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut Probleme d'insertion dans la base de données distante
    Bonjour
    je desirerai faire une insertion dans la table de données distante lorsque l'objet modifié dans ma table local , n'y existe pas , sinon ( s'il existe ) je le met a jour, voila mon trigger , je ne sais pas ou ca déconne
    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
    CREATE OR REPLACE TRIGGER trigger_codeb AFTER UPDATE OR INSERT ON SUPPORTE FOR
    EACH ROW
    DECLARE
    sub_id VARCHAR(30);
    existe
    INTEGER:=0;
    BEGIN
    sub_id:=trouve_id_personne(:new.id_carte);
    select count(*)
    into existe from asynchrone@exportSynchrone where codebar= :old.codebar ;
    if
    (sub_id IS NOT NULL) then
    if ( existe > 0) then
    update
    asynchrone@exportSynchrone set  codebar= :new.codebar  where codebar =
    :old.codebar ;
    else
    insert into asynchrone@exportSynchrone
    (codebar,id_personne,diffphoto) values (:new.codebar
    ,substr(sub_id,1,(length(sub_id)-12)) ,'N');
    COMMIT;
    end if;
    end if;
     END ;
    avec
    ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE FUNCTION trouve_id_personne(id_c VARCHAR2)
    RETURN varchar2 IS 
    id_p varchar(20);
    PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
    select id_personne into id_p from porteur, supporte where porteur.id_carte=supporte.id_carte  and porteur.id_carte= id_c;
    RETURN id_p;
    Exception
    When NO_DATA_FOUND Then RETURN NULL;
    END

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est quoi l'erreur ?
    Ton trigger est bien compilé ? Parce qu'un COMMIT dans un trigger c'est interdit.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    oui , il est compilé , 0 erreur
    quand je modifie une valeur qui n'existe pas dans la table distante , normaleme,t il doit l'inserer , or il le fait pas

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    il doit y avoir une erreur, comme c'est dit, commit dans trigger c'est pas possible

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    j'execute la requete dans sql*plus , lorsque j'execute le trigger , on m'affiche :
    comment faire pr qu'il detecte l'erreur ?

  6. #6
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    Si cela peut vs aider , je ss sur Oracle 10g express

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    A part ça ton code n'est pas super optimisé non plus

    Soit tu utilises MERGE soit un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE TRIGGER trigger_codeb AFTER UPDATE OR INSERT ON SUPPORTE FOR
    EACH ROW
    BEGIN
    UPDATE asynchrone@exportSynchrone SET  codebar= :new.codebar  WHERE codebar =:old.codebar ;
    IF SQL%ROWCOUNT=0 THEN 
    INSERT INTO asynchrone@exportSynchrone
    (codebar,id_personne,diffphoto) VALUES (:new.codebar
    ,substr(sub_id,1,(length(sub_id)-12)) ,'N');
    end IF;
     END ;

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Points : 115
    Points
    115
    Par défaut
    Merci pr le code optimisé
    sinon une fois j'ai enlevé un test "con"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( if sub_id is not null )
    il vient de detecter que commit doit pas etre la lol
    bonne fin de soirée et merci encore

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

Discussions similaires

  1. [MySQL] probleme d'insertion dans la base de donné
    Par pfakhmaies dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 14/07/2011, 11h33
  2. Probleme d'insertion dans une base de donnée
    Par jubourbon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/06/2009, 10h35
  3. probleme d'insertion dans la base de données
    Par mystro7200 dans le forum JDBC
    Réponses: 11
    Dernier message: 03/12/2008, 19h49
  4. Probleme d'insertion dans la base de données
    Par dedein84 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/07/2008, 09h33
  5. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 16h21

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