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 :

Trigger update automatique suivant la date


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut Trigger update automatique suivant la date
    Bonjour à tous,

    voici mon problème, j'ai une table (MaTable) comportant plusieurs champs, dont un qui est une date (champs_date), et un autre qui est un texte (champs_text, par défaut "Prévision").
    J'aimerai qu'automatiquement, lorsque la date du champs est inférieur à la date actuelle, le champs texte devienne "Validé".

    D'après mes recherches il faudrait créer un trigger, mais je n'ai aucune idée de comment le réaliser.

    Merci de votre aide !

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    J'ai essayé de faire ça mais ça ne fonctionne pas, je ne sais pas comment exprimer si "champs_date <= sysdate() " ALORS champs_texte = 'VALIDE'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER S03.update_etat
    AFTER UPDATE
    ON S03.MaTable
        FOR EACH ROW
        WHEN champs_date <= sysdate() 
        champs_texte = 'VALIDE';
    Merci de votre aide

  3. #3
    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
    1. On ne parle pas de champs mais de colonnes dans une base de données
    2. Il vaut mieux passer par une vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE VIEW v_MaTable
    AS
    select ...
         , case
             when col_date <= sysdate
             then 'Validé'
             else 'Prévision'
           end as col_texte
      from MaTable;
    Le trigger ne se déclenche que si vous modifiez une ligne dans la table.
    La vue modifiera "automatiquement" la valeur de col_texte en fonction de la date à laquelle la vue sera interrogée.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    Merci, mais je ne comprend pas ce que je dois mettre à la place des "..." "," ?

  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
    Les colonnes de votre table.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    J'ai donc fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE VIEW v_MaTable
    AS
    select col_date, 
           case
             when col_date <= sysdate
             then 'Validé'
             else 'Prévision'
           end as col_texte
      from MaTable;
    Mais ça ne fait rien...
    Qu'est ce que je peux faire d'autre ? merci

  7. #7
    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
    Et bien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v_MaTable
    Et non les données ne changent pas, c'est bien le but.

    Votre donnée dépendant d'un facteur temporel n'a pas à être physiquement stocké.

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    En sélectionnant la vue j'ai le résultat.
    Mais justement ce n'est pas ce que je veux (créer une vue), je veux que les données soient directement changées dans la table (un update quoi).

    Merci encore de l'aide !!

Discussions similaires

  1. UPDATE automatique dès la date passée
    Par davok dans le forum Langage SQL
    Réponses: 10
    Dernier message: 01/05/2015, 11h53
  2. Ajout d'une colonne automatiquement suivant date
    Par paflolo dans le forum Access
    Réponses: 7
    Dernier message: 07/03/2006, 17h51
  3. [trigger] update inserted?
    Par cosminutza dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/06/2005, 09h37
  4. Réponses: 2
    Dernier message: 10/05/2005, 18h15
  5. Trigger Update et Column_Updated
    Par Pm dans le forum Développement
    Réponses: 2
    Dernier message: 16/06/2004, 09h07

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