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

Oracle Discussion :

problème trigger


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut problème trigger
    Bonjour à tous

    Je voudrais creer un trigger mais je n'y arrive pas, j'ai une erreur :(

    Voici mon trigger :
    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
    create or replace trigger annulation
    after delete on commandes
    for each row
    declare
         cursor c is select * from :old.lgnscom;
         m c%rowtype;
    begin
         open c;
         loop
              fetch c into m;
              exit when c%notfound;
              update medics set stock=stock+m.qte when m.idmed=idmed;
         end loop;
         close c;
    end;
    /
    Dans ma table commandes, il y a une nested table (lgnscom) qui regroupa la liste des medicaments et la quantité (idmed et qte)
    Dans la table medics, il y a un idmed et un stock

    Mon trigger doit mettre a jour les stock dans la table medics a chaque suppression d'une commande dans la table commandes

    Quand je compile mon trigger ça me met :
    Déclancheur creer avec erreur de compilation

    L'erreur est la PLS-00103 à la ligne 2,
    Symbole "" rencontré à la place d'un des symboles suivant:
    <an identifier> <a double-quoted delimited-identifier>

    Je pense en fait que l'erreur viens du select que je fait sur :old.lgnscom

    On ne peut pas utiliser de :old et :new dans la section declare ?
    On ne peut pas parcourir un nested table comme cela ?

    Merci de vos réponses

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Ne faudrait-il pas referencer la nested table avec ?
    cursor c is select * from TABLE(:old.lgnscom);

  3. #3
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Et remplacer
    update medics set stock=stock+m.qte when m.idmed=idmed;
    avec
    update medics set stock=stock+m.qte where m.idmed=idmed;

Discussions similaires

  1. Problème trigger sur ajout
    Par envie2noichi dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/07/2007, 14h35
  2. [Oracle 8i] Problème Trigger-Table
    Par lper dans le forum SQL
    Réponses: 4
    Dernier message: 03/04/2007, 18h16
  3. Problème Triggers croisés
    Par banban dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/02/2007, 00h44
  4. Problême trigger PL SQL
    Par JonathanB dans le forum Administration
    Réponses: 5
    Dernier message: 24/12/2006, 20h23
  5. Problème Trigger SQL Server
    Par RodEpsi dans le forum Développement
    Réponses: 6
    Dernier message: 25/05/2006, 16h03

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