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 :

Création de triggers


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut Création de triggers
    Bonjour a tous,

    Je débute dans le monde des triggers, j'ai besoin d'automatiser une action sur une base de données toute bête...

    je veut qu'après que table media est recu un update (update à 1) sur l'attribut 'disponibilidad' le triggers mette a jour dans cette même table l'attribut id_usuario a 0...

    Voici le code que j'ai réalisé mais j'obtient des erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER  Free_usuario
    AFTER update on MEDIA
    for each row
    WHEN (new.DISPONIBILIDAD =1)
    BEGIN
    UPDATE media
    SET id_usuario=0
    WHERE new.disponibilidad=1
    END;
    ERREUR: ERROR at line 5: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following
    une idée svp ???

    Merci d'avance...

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Salut,
    c'est un simple problème de syntaxe...
    il te manque 2 choses :
    1. des ":" (deux points) pour qualifier tes variables "new"
    2. des ";" (point virgule) pour signifier la fin de chaque instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER Free_usuario
    AFTER update on MEDIA
    for each row
    WHEN (:new.DISPONIBILIDAD =1)
    BEGIN
    UPDATE media
    SET id_usuario=0
    WHERE :new.disponibilidad=1 ;
    END;
    maintenant 2 généralités sur ce forum :

    1. pense à utiliser les balises CODE, ça rend le code bien plus lisible.
    2. ce coup-ci OK, mais à l'avenir ce forum est là pour aider aux problèmes de fond... ce n'est pas un débogueur interactif... alors les problèmes de syntaxe de base tu les résouds toi-même, merci !

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Yorglaa Voir le message
    c'est un simple problème de syntaxe...
    il te manque 2 choses :
    1. des ":" (deux points) pour qualifier tes variables "new"
    Effectivement, c'est "un simple problème de syntaxe".
    Du coup, votre code ne marchera pas non plus, parce que dans la clause WHEN, il ne faut pas préfixer NEW ou OLD par ":". (C'est exigé uniquement dans le corps du déclencheur)

  4. #4
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    oups, désolé, j'ai répondu vite !

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Et puis ça marchera jamais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ON UPDATE ON MEDIA
    BEGIN
    UPDATE media ..
    END;
    Tu ne peux ni lire, ni updater, ni insérer dans la table du trigger.
    Quelqu'un peut donner l'erreur oracle ? (J'ai dormi que 4h, j'ai le cerveau en mode ralenti)

    Edit : C'est bon l'erreur est : Table Mutante (ou Mutating table)

  6. #6
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Rôôôôôôô...
    lui gâcher ainsi le plaisir de la découverte et de l'auto-formation...

Discussions similaires

  1. Création de triggers sous PHPMyAdmin
    Par MakorDal dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/02/2007, 18h50
  2. [MySQL] Création de trigger depuis PHP
    Par Shiva dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2007, 13h16
  3. [Débutant] Création de trigger
    Par steph_batman dans le forum Développement
    Réponses: 4
    Dernier message: 06/12/2006, 16h44
  4. [PL/SQL] [9i] Pblm lors de la création de triggers
    Par ftrifiro dans le forum Oracle
    Réponses: 3
    Dernier message: 27/06/2006, 15h08
  5. [IB][IBQUERY][D7 pro] Création de Triggers à la volée.
    Par N1bus dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/10/2004, 14h23

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