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

Administration Oracle Discussion :

problème avec les triggers


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut problème avec les triggers
    J'ai un TP en BDD qui consiste à creer une trigger pour empecher qu'un soit emprunter deux fois sans qu'il est était rendu.
    Voici mon 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
    19
    20
     
    CREATE OR REPLACE TRIGGER trigemprunt
    BEFORE INSERT
    ON emprunt
    FOR EACH ROW 
     
    DECLARE
    erreur_v EXCEPTION;
     
    BEGIN
     
    IF (num_livre = :new.num_livre AND date_retour is NULL) THEN
    RAISE erreur_v;
    END IF;
     
    EXCEPTION
     WHEN erreur_v THEN
     RAISE_APPLICATION_ERROR(-20001,'pas le droit d'emprunter un livre déjà emprunter');
     
    END;
    ET j'obtiens l'erreur suivante:
    ERROR at line 12: PLS-00103: Symbole "EMPRUNTER" rencontré à la place d'un des symboles suivants : ) , * & | = - + < / > at in is mod remainder not rem => .. <> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_ between || multiset member SUBMULTISET_

    1. CREATE OR REPLACE TRIGGER trigemprunt
    2. BEFORE INSERT
    3. ON emprunt
    Petite précision j'utilise oracle 10g
    Merci d'avance de votre aide. Bonne journée à tous

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Points : 211
    Points
    211
    Par défaut
    Salut,

    Tu as une apostrophe dans la chaîne que tu veux afficher en cas d'erreur, il faut que tu la protège en la doublant.
    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
     
    CREATE OR REPLACE TRIGGER trigemprunt
    BEFORE INSERT
    ON emprunt
    FOR EACH ROW 
     
    DECLARE
    erreur_v EXCEPTION;
     
    BEGIN
     
    IF (num_livre = :new.num_livre AND date_retour is NULL) THEN
    RAISE erreur_v;
    END IF;
     
    EXCEPTION
     WHEN erreur_v THEN
     RAISE_APPLICATION_ERROR(-20001,'pas le droit d''emprunter un livre déjà emprunter');
     
    END;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Merci bcp de ton aide mais j'ai une autre erreur pourrait tu encore une fois m'aider:

    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
     
    CREATE OR REPLACE TRIGGER trigemprunt
    BEFORE INSERT
    ON emprunt
    FOR EACH ROW 
     
    DECLARE
    erreur_v EXCEPTION;
    num_livre_v NUMBER;
     
    BEGIN
     
    num_livre_v := (SELECT num_livre
                    FROM emprunt
                    WHERE :new.num_livre = num_livre AND date_retour is NULL);
     
    IF (num_livre_v = :new.num_livre AND date_retour is NULL) THEN
    RAISE erreur_v;
    END IF;
     
    EXCEPTION
     WHEN erreur_v THEN
     RAISE_APPLICATION_ERROR(-20001,'pas le droit d''emprunter un livre déjà emprunter');
     
    END;
    et mon erreur
    ERROR at line 19: PLS-00103: Symbole "end-of-file" rencontré à la place d'un des symboles suivants : end not pragma final instantiable order overriding static member constructor map

    1. CREATE OR REPLACE TRIGGER trigemprunt
    2. BEFORE INSERT
    3. ON emprunt
    Merci encore une fois de votre aide .
    PS: si tu penses que je m'y prend mal, pourrait tu m'indiquer une autre méthode stp?

  4. #4
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249
    Par défaut
    1/ il faut coler l'erreur complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    7/17     PLS-00103: ... "SELECT" ...
    9/73     PLS-00103: ... ")" ...
    19/4     PLS-00103: ... "end-of-file" ...
    2/ un déclencheur valid ("select into" à la place de ":= (select"), mais pas logique et correct:
    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 trigemprunt
    BEFORE INSERT
    ON emprunt
    FOR EACH ROW 
     
    DECLARE
    erreur_v EXCEPTION;
    num_livre_v NUMBER;
     
    BEGIN
     
    SELECT num_livre into num_livre_v
      FROM emprunt
      WHERE :new.num_livre = num_livre AND date_retour IS NULL;
     
    IF (num_livre_v = :new.num_livre) THEN
    RAISE erreur_v;
    END IF;
     
    EXCEPTION
     WHEN erreur_v THEN
     RAISE_APPLICATION_ERROR(-20001,'pas le droit d''emprunter un livre déja emprunter');
     
    END;
    DAB

  5. #5
    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
    Juste pour info : On dit
    pas le droit d'emprunter un livre déjà emprunté
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Problème avec les PS et Triggers
    Par kaouane dans le forum Firebird
    Réponses: 12
    Dernier message: 02/01/2013, 15h54
  2. problème avec les trigger delete
    Par mb10 dans le forum Administration
    Réponses: 3
    Dernier message: 25/01/2012, 16h46
  3. problème avec les triggers
    Par aldama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/02/2009, 12h04
  4. Réponses: 4
    Dernier message: 01/05/2006, 22h53
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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