Trigger udapte automatique suivant la date

Fermé
sasafca Messages postés 505 Date d'inscription mercredi 27 février 2008 Statut Membre Dernière intervention 8 septembre 2017 - 30 juil. 2013 à 10:12
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 - 20 août 2013 à 21:54
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 !
A voir également:

1 réponse

BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
20 août 2013 à 21:54
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