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 :

Demande sur événement déclencheur


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Demande sur événement déclencheur
    Bonsoir ,

    Je suis entrain de travailler une application et dans ma base de donnée j'ai une table produit qui possède plusieurs champs dont lesquelles la date du produit.J'aimerais bien écrire au niveau de la base un code qui me permet par exemple lorsque la date d'un produit X déjà insérer dans la base de donnée dépasse 30 jours j'efface cette enregistrement.
    J'ai vraiment besoin de votre aide s'il vous plait si vous pouvez m'indiquer une méthode ou un petit tutorial sur comment je dois procéder car je me bloque maintenant.J'ai entendu parler qu'il faut faire un Job et autre truc ...
    J'ai besoin de votre aide
    Merci

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Ecrivez la requête qui supprime les produits. Ensuite intégrez cette requête dans une procédure. Ensuite programmez un job pour exécuter cette procédure.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    tout d'abord je vous remercie pour votre réponse
    Ensuite....Avant votre réponse j'ai cherché un petit peu sur le net et j'ai trouvé que je peux travailler avec les trigger et j'aimerais bien avoir votre avis est-ce-que je peux utiliser cette méthode autre que d'utiliser le job?Si oui voilà c'est ce sur j'ai fait mais je bloque un petit peu sur la condition if si vous pouvez voir ça avec moi s'il vous plait?
    Voilà dans ma table produit j'ai le champs date_mise_en_ligne, donc après chaque insertion et que la date est dépassé de 7 jours j'efface tous l'enregistrement
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace trigger TR_Produit
     as
    After Insert ON PRODUIT
    FOR EACH ROW
    BEGIN
    if(date_mise_en_ligne dépasse 7 jour)
    DELETE From PRODUIT where date_mise_en_ligne=?
    END;
    /
    Voilà comment j'ai raisonné mais j'ai pas trouvé comment je peux écrire lorsque la date est dépassé de 7 jours?
    J'aimerais bien avoir votre avis si ce code peux marcher ?et comment je peux écrire la condition "if" avec le langage base de donnée car j'ai pas trouvé vraiment?
    Merci pour votre aide encore une fois

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Ca ne fonctionnera pas avec un trigger for each row, en même tant l'utilisation d'un trigger for each row est ici inutile.
    Par contre si aucun produit n'est inséré pendant la journée alors les anciens produits ne seront pas supprimés, donc un trigger ne semble pas répondre au cahier des charges contrairement à un job qui s'exécuterait tous les soirs.

    La différence entre 2 dates est un nombre de jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM PRODUIT 
     WHERE date_mise_en_ligne < trunc(sysdate) - 7

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Donc je suis sensé écrire un job au lieu d'un trigger?ou dans d'autre terme mettre la requête que vous m'avez donné dans un job qui s’exécute tous les soirs?

  6. #6
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    en plus le trigger que tu as ecrit compile mais n'est pas correct.
    il va generer une erreur au 1e insert pour cause de table en mutation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ORA-04091: la table SAE.TRACE est en mutation ; le déclencheur ou la fonction ne peut la voir
    ORA-06512: à "SAE.TR_TRACE", ligne 3
    ORA-04088: erreur lors d'exécution du déclencheur 'SAE.TR_TRACE'

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

Discussions similaires

  1. Demande de précision sur évènement click
    Par Skualys dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/07/2009, 23h33
  2. Problème sur évènement
    Par Azharis dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 16h36
  3. [O9i][Win][OMS]Erreur sur événement
    Par Fabien Celaia dans le forum Oracle
    Réponses: 4
    Dernier message: 05/11/2004, 15h00

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