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 :

Erreur à la création d'un trigger


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Par défaut Erreur à la création d'un trigger
    Bonjour,
    Je rencontre un problème lors de la création d'un Trigger

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE TRIGGER T before UPDATE on AchatProduit
    begin
    declare Id number
    déclare Qt Number
    select Id=Id_produit, Qt=quantite from inserted
    UPDATE Produit SET stock=stock+qt where Id_produit=Id
    end;
    /
    Le Trigger est compile avec des erreurs
    Savez-vous d’où vient le problème?
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Citation Envoyé par marineJ Voir le message
    Le Trigger est compile avec des erreurs
    Ce serait plus facile pour t'aider si tu nous donnais les messages d'erreur.

    Toutefois, sans chercher très loin, je relève le mot clé déclare avec un accent et l'absence de séparateur ; à la fin de chaque commande.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Par défaut
    Bonjour,

    j'ai essayé de corriger les erreurs mais je rencontre toujours un problème
    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace trigger T after insert on Achat for each row
      begin
      declare Id number;
      declare Qt number;
      select Id=Id_produit, Qt=Quantite from Achat;
      update Produit set stock=stock+Qt where Id_produit=Id;
      end;
      /
    Je reçois ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     PLS-00103: Encountered the symbol "DECLARE" when expecting one of
             the following:
             begin function pragma procedure subtype type <an identifier>
             <a double-quoted delimited-identifier> current cursor delete
             exists prior
             The symbol "begin" was substituted for "DECLARE" to continue.
     
    4/1      PLS-00103: Encountered the symbol "SELECT" when expecting one of
             the following:
             begin function pragma procedure subtype type <an identifier>
             <a double-quoted delimited-identifier> current cursor delete
    Je ne vois pas d'où vient le problème lors de la compilation;

    merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Tu sembles mélanger les syntaxes des dialectes SQL de plusieurs SGBD.
    Ils ne sont malheureusement pas interchangeables. Bien qu'il existe une norme, chaque éditeur considère que sa vision des choses est la meilleure et développe son propre langage procédural dans son coin.

    Voici quelque chose qui pourrait se rapprocher de la syntaxe Oracle, mais je n'ai aucun moyen de le vérifier.
    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
    create or replace trigger T 
        after insert on Achat 
        for each row
    declare 
        Id number;
        Qt number;
    begin
        select  Id_produit
            ,   Quantite
        into    Id
            ,   Qt
        from    inserted
        ;
        update  Produit 
        set     stock   = stock + Qt 
        where   Id_produit  = Id
        ;
    end;
    /
    A toi de tirer les fils de chaque erreur de compilation que tu rencontreras.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    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
    Citation Envoyé par al1_24 Voir le message
    Voici quelque chose qui pourrait se rapprocher de la syntaxe Oracle, mais je n'ai aucun moyen de le vérifier.
    C'est plus simple chez Oracle, les valeurs avant / après sont directement levées dans des variables automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace trigger tai_achat_maj_produit
    after insert on Achat 
    for each row
    begin
        update Produit 
           set stock      = :new.Qt + stock
         where Id_produit = :new.Id;
    end;
    /

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    En effet, ça fait des lustres que je n'ai pas écrit de trigger
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 882
    Par défaut
    Salut marineJ.

    Quel est le nom de votre SGBDR ?
    Est-ce Oracle, MySql, Mariadb, FireBird, Microsoft SQL Server ou autre ?

    D'après votre autre sujet, vous êtes sous MySql. Est-ce bien cela ?
    Je dis cela car à l'origine, ce sujet se trouvait dans le forum MySql et maintenant, il se trouve dans le forum Oracle.

    Ne mélangez pas vos sujets dans des forums différents car comme le dit Al1_24, chaque SGBDR a sa propre façon de traiter les déclencheurs, ...

    @+

Discussions similaires

  1. Pb Creation Trigger
    Par vincmor dans le forum Oracle
    Réponses: 2
    Dernier message: 11/10/2006, 13h18
  2. [Trigger] Erreur 1136 lors d'une insertion
    Par tyrant dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/05/2006, 21h41
  3. TRIGGER Erreur PLS-00357
    Par fuhraih dans le forum Oracle
    Réponses: 6
    Dernier message: 19/04/2006, 10h20
  4. [10g] Trigger erreur de compilation
    Par flasomm dans le forum Oracle
    Réponses: 2
    Dernier message: 03/01/2006, 03h07
  5. [Debug] [Trigger] erreur d'exe pas très précise
    Par viena dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2005, 11h36

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