[TRIGGER] Bloquer la mise à jour
Bonjour,
Je ne sais pas si je suis au bon endroit et j'ai besoin de votre aide pour une partie de code.
Je veux bloquer la mise à jour d'une personne dehors d'heures de travail (de 17h à 9h), est-ce que ce n'est pas une table qu'il faut bloquer la mise à jour?
Code:
1 2 3 4 5 6 7 8 9
| CREATE OR REPLACE TRIGGER MAJAUTO
BEFORE UPDATE OF majannule ON MY_TABLE
FOR EACH ROW
BEGIN
IF UDPATE PERSONNE
SET new.NUM_PERSONNE = 1
WHERE --> heure de blocage de la mise à jour d'une personne ?
END IF
END; |
Merci
Corriger le code de trigger
Je vous remercie de votre retour, je vois que je manque beaucoup de description. Pour commencer, je souhaite de bloquer les modifications juste de la table PERSONNE en dehors des heures de travail et aussi le week-end.
J'ai fait la sélection pour afficher les heures et jours comme vous l'avez dit :
Code:
1 2
| SELECT to_char(sysdate,'HH:MM') , to_char(sysdate+5,'DAY'), to_char(sysdate+6,'DAY')
FROM SALARIE; |
Mais je veux faire un trigger qui permet de bloquer les modifications de la table en dehors des heures de travail, voici le code que j'ai modifié :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| CREATE OR REPLACE TRIGGER MAJAUTO
BEFORE UPDATE OF PERSONNE ON MY_TABLE
FOR EACH ROW
BEGIN
SELECT to_char(sysdate,'HH:MM') , to_char(sysdate+5,'DAY'), to_char(sysdate+6,'DAY')
FROM SALARIE;
UPDATE PERSONNE
SET NUM_PERSONNE = new.NUM_PERSONNE,
NOM = new.NOM,
PRENOM = new.PRENOM;
EXCEPTION
Raise exception?
END; |
Pour la mise à jour, il s'agit les champs (nom, prenom, id) de la table PERSONNE que la mise à jour effectue et est-ce que c'est bien le code suivant? :
Code:
1 2 3 4
| UPDATE PERSONNE
SET NUM_PERSONNE = new.NUM_PERSONNE,
NOM = new.NOM,
PRENOM = new.PRENOM; |
Car après ma recherche, le tutoriel guide la mise à jour sur un champ alors que je veux la mise à jour qui effectuera sur tous les champs.
Pour le trigger, j'hésite d'ajouter la condition en mettant IF avant SELECT et après EXCEPTION,non?
Pour plus de détail, la version d'Oracle : 18.1.0
Pour l'information, j'ai cherché pas mal de net sur l'empêchement de modifier et j'ai trouvé "RAISE EXCEPTION" pas expliquer la précision comme le tuto.