Trigger udapte automatique suivant la date

sasafca Messages postés 567 Statut Membre -  
BadGuitarist Messages postés 373 Statut Membre -
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.

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'

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 !

1 réponse

  1. BadGuitarist Messages postés 373 Statut Membre 27
     
    Bonsoir sasafca,

    CREATE OR REPLACE TRIGGER update_etat
    BEFORE UPDATE ON MaTable
    FOR EACH ROW
    WHEN (NEW.champs_date <= SYSDATE)
    DECLARE
    
    BEGIN
      :NEW.champs_texte = 'VALIDE';
    END ;
    /
    


    Remarques :
    1)Fais attention à la syntaxe :
    - dans la clause WHEN, le champs_date est préfixé par le mot clé NEW
    - dans le corps (BEGIN ... END), le champs_date doit être préfixé par le mot clé :NEW

    2) Le trigger ci-dessus ne se déclenche que si modification d'un enregistrement. Si tu veux qu'il se déclenche aussi pour un nouvel enregistrement, modifie la clause BEFORE ainsi :
    BEFORE INSERT OR UPDATE ON MaTable


    0