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

PL/SQL Oracle Discussion :

Problème d'update après l'ajout d'un trigger


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Par défaut Problème d'update après l'ajout d'un trigger
    bonsoir , j'ai une table etudiant , après l'ajout d'un trigger , voici son code
    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
     
    create or replace trigger liste_pay
      after insert or update or delete on ETUDIANT for each row
    begin
       if inserting Then   
    insert into payement_etudiant(id_etudiant,nom,prenom,nom_filiere,num_groupe,niveau) values (:new.id_etudiant,:new.nom_etudiant,:new.prenom_etudiant,:new.nom_filiere,:new.num_groupe,:new.niveau); 
     
    Elsif updating Then
    update payement_etudiant set nom= (select :new.nom_etudiant from etudiant where id_etudiant=:new.id_etudiant);
    update payement_etudiant set prenom=:new.prenom_etudiant where id_etudiant=:new.id_etudiant; 
    update payement_etudiant set nom_filiere=:new.nom_filiere where id_etudiant=:new.id_etudiant;
    update payement_etudiant set  num_groupe=:new.num_groupe where id_etudiant=:new.id_etudiant;
    update payement_etudiant set  niveau=:new.niveau where id_etudiant=:new.id_etudiant;
       Elsif deleting Then
                           delete from payement_etudiant where id_etudiant=:old.id_etudiant;
       End if ;
    End;
    /
    qui ne comporte pas d'erreur de compilation
    la problem est après l'ajout de ce trigger je peut ajouter des enregistrements sur la table etudiant mais je peut pas mettre a jours les enregistrements deja présent dans cette table
    quelqu'un a une idée a quoi consiste le problem ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    C'est la nouvelle maniere de faire un TP ? Dès que ça marche pas on post sur internet ?
    Pas sûr que cela soit une bonne approche d'apprentissage !

    Je trouve étrange :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE TRIGGER liste_pay
      after INSERT OR UPDATE OR DELETE ON ETUDIANT FOR each row
    begin
       IF inserting Then   
    INSERT INTO payement_etudiant.......   
    Elsif updating Then
    UPDATE payement_etudiant SET nom= (SELECT :new.nom_etudiant FROM etudiant WHERE id_etudiant=:new.id_etudiant);
    Come d'ab, avec les messages d'erreur, la version d'oracle etc c'est plus facile.
    Mais tu le sais déjà, on te l'a déja dit!

  3. #3
    Membre confirmé Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Par défaut
    non c pas un tp , je suis entrain de developper ma première application oracle forms.

    j'utilise oracle 10g et il y as aucun message d'erreur lors de la compilation du trigger et aucun message d'erreur lors de la création des tables

    quand j'ai ajouté le trigger , les mises a jours sur les tuples du table etudiant ne sont pas validé erreur : mise a jour impossible

    alors si j'enleve le trigger les mise a jour seront validée

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    Je doute que tu n'ai pas d'erreur.
    En lançant le truc sous sqldevelopper et en regardant le bon onglet, tu devrais trouver.

    A part ça,
    (SELECT :new.nom_etudiant FROM etudiant WHERE id_etudiant=:new.id_etudiant);

    Cela ne t'interpelle toujours pas ? Pourquoi pas

    (SELECT 42 FROM etudiant WHERE id_etudiant=:new.id_etudiant);

    Tu n'as pas besoin de faire de sql pour acceder à des variables PL.

  5. #5
    Membre confirmé Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Par défaut
    le trigger sous sql plus , ne donne aucune erreur de compilation

    je n'est pas compris quesque vous voulez dire par le 42

    (SELECT 42 FROM etudiant WHERE id_etudiant=:new.id_etudiant);

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    42 est a réponse à toute les question.

    C'est surtout une constante.

    :New_value.xx, c'est une variable PL.

    C'est faire un long détour d'aller chercher une variable PL ou une constante en passant par SQL.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/01/2012, 17h01
  2. Problème d'update après un select
    Par DarkenRahl dans le forum Hibernate
    Réponses: 2
    Dernier message: 26/11/2009, 14h59
  3. problème de update après l'utilisation d'un lov
    Par scofild20 dans le forum Forms
    Réponses: 3
    Dernier message: 07/09/2008, 18h23
  4. Problème d'update après un select
    Par nuandafr dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/04/2008, 15h31
  5. Réponses: 3
    Dernier message: 10/05/2007, 07h43

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