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 :

Triggers Oracle 10g Express Edition


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut Triggers Oracle 10g Express Edition
    Bonjour a tous,

    je me retrouve confronté aux codage de triggers et j'aurais voulu que quelqu'un me guide car j'ai essayé a plusieurs reprise de pratiquer mais sans succès...

    Voici ce que je desire faire j'ai 2 tables:

    1 table registre de location nomé REGISTRO_PRESTAR.
    1 autre table appelé MEDIA.

    Voici leur compositions:

    table REGISTRO_PRESTAR:

    ID_USUARIO ID_MEDIA ID_RENT
    1 3 2
    5 3 3
    2 1 4
    4 3 5
    1 2 1

    table MEDIA:

    ID_MEDIA TIPO_MEDIA FECHA_SALIDAD TITULO SUBJETO CANTIDAD

    3 DVD 13-MAY-98 BLA blo 3

    ID_AUTOR ID_DISTRIBUIDOR

    1 3

    Voila ce que je veut que mon triggers fasse:

    Apres un insert ou un update sur la table REGISTRO_PRESTAR pour un media donné (id_media), je veut décrémenter la valeur de cantidad de ce media dans la table MEDIA.

    Je ne suis malheureusement pas arrivé a mes fins si quelqu'un voulais bien me prendre la main et me guidé... J'EN SERAIT FORT RAVI.

    Merci d'avance.

  2. #2
    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
    Où est ce que tu bloques ?

    Un trigger c'est tout simple, c'est du pl/sql.
    La seule différence c'est que tu accèdes aux données en cours de traitement par les variables :new.nomcolonne (pour les nouvelles valeurs) et :old.nomcolonne (pour les anciennes).

    Dans ton cas, il te faut coder un trigger before update or insert for each row et tu exécute l'update de la table Média pour décrémenter cantidad en utilisant where idmedia = :new.idmedia

    Voila

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut
    Merci de ta réponse,

    J'ai bien fais tout cela avant de faire mon post mais y'as pas moyen le code qui s'éxecute ne veut rien savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE TRIGGER PRESTAR_LIBRE
    BEFORE UPDATE OR INSERT ON REGISTRO_PRESTAR
    FOR EACH ROW WHEN(NEW.ID_MEDIA IS NOT NULL) 
    BEGIN
    UPDATE MEDIA
    SET CANTIDAD - 1
    WHERE ID_MEDIA = :NEW.ID_MEDIA;
    END;
    Réponse d'oracle :

    ERROR at line 2: PL/SQL: SQL Statement ignored

    1. CREATE OR REPLACE TRIGGER essai
    2. BEFORE UPDATE OR INSERT ON REGISTRO_PRESTAR
    3. FOR EACH ROW
    4. BEGIN

    J'aurais peut être du poster ce code dans mon premier post mais je voulais avoir un avis de quelqu'un autre pour savoir si je m'y prenait pas mal...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut
    Quand on est bête, on bête ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE TRIGGER PRESTAR_LIBRE
    BEFORE UPDATE OR INSERT ON REGISTRO_PRESTAR
    FOR EACH ROW WHEN(NEW.ID_MEDIA IS NOT NULL) 
    BEGIN
    UPDATE MEDIA
    SET CANTIDAD= CANTIDAD - 1
    WHERE ID_MEDIA = :NEW.ID_MEDIA;
    END;


    Merci pour ton aide

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

Discussions similaires

  1. Changement de port d'écoute pour Oracle 10g Express Edition
    Par A D R I A N O dans le forum Installation
    Réponses: 2
    Dernier message: 22/03/2011, 16h07
  2. oracle 10g express edition,pl/sql et forms .
    Par isoman dans le forum SQL
    Réponses: 3
    Dernier message: 13/03/2008, 17h10
  3. Connexion Oracle 10g Express Edition
    Par Virgile59 dans le forum Oracle
    Réponses: 1
    Dernier message: 03/01/2007, 16h55
  4. Oracle 10g (Express Edition) ...
    Par avaacn dans le forum Oracle
    Réponses: 9
    Dernier message: 04/04/2006, 17h09
  5. Réponses: 1
    Dernier message: 22/03/2006, 08h24

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