Bonjour.
Sur un table, un trigger est ajouté (ADDPFTRG) en le faisant pointer sur un objet RPGLE/*PGM.
Lorsque la table est ouverte (en natif) dans un programme de mise à jour, le programme associé au trigger apparaît alors comme verrouillé (même si aucune action sur la table n'a encore été effectuée), et il n'est alors plus possible de remplacer cet objet (par exemple pour installer une correction).
Lorsqu'on remplace un programme "normal" (non trigger), l'objet remplacé est déplacé/renommé dans QRPLOBJ, et il est utilisé jusqu'à la fermeture du travail. Dans le cas des programmes associés à des triggers, ce fonctionnement semble impossible.
Est-ce que c'est bien le fonctionnement particulier pour les programmes associés à un trigger ? Y-a-t'il un moyen (compilation du programme, option du trigger) d'influencer ce comportement ?
Merci.
triggers
-
- Messages : 58
- Enregistré le : jeu. 12 avr. 2012, 14:50:53
Modifié en dernier par thomas.barberot le mar. 20 nov. 2018, 11:19:28, modifié 2 fois.
(sujet inconnu)
Salut,
Au niveau du ADDPFTRG je ne sais pas exactement comment les verrouillages fonctionnent.
Par contre ce que tu peux faire c'est créé un trigger SQL.
En cas de modification, tu fais un drop trigger et create trigger.
Exemple :
Au niveau du ADDPFTRG je ne sais pas exactement comment les verrouillages fonctionnent.
Par contre ce que tu peux faire c'est créé un trigger SQL.
En cas de modification, tu fais un drop trigger et create trigger.
Exemple :
c/exec sql
c+ CREATE TRIGGER bib/nom_trigger
c+ AFTER UPDATE ON bibi/nom_fichier
c+ REFERENCING NEW ROW AS N
c+ OLD ROW AS A
c+ FOR EACH ROW MODE DB2ROW
c+ WHEN (( A.ZONE <> N.ZONE)
c+ BEGIN
c+ INSERT INTO fichiertrigger
c+ VALUES
c+ ( N.ZONE,
c+ 'UPDATE', USER, CURRENT_TIMESTAMP) ;
c+ END
c/end-exec
Florian
-
- Messages : 58
- Enregistré le : jeu. 12 avr. 2012, 14:50:53
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
ADDPFTRG
C'est effectivement un problème avec les triggers, IBM a essayé de baisser le niveau de verrouillage par une option de QAQQINI PREVENT_ADDITIONAL_CONFLICTING_LOCKS
https://ibm.co/2FAecO9
A tester ?
https://ibm.co/2FAecO9
A tester ?
Christian Massé (Volubis.fr)
-
- Messages : 58
- Enregistré le : jeu. 12 avr. 2012, 14:50:53
(sujet inconnu)
La modification de la valeur (j'ai essayé "*YES" et "*NO") de l'option "PREVENT_ADDITIONAL_CONFLICTING_LOCKS" du QAQQINI de QUSRSYS n'a visiblement aucun effet sur le fait que le *PGM déclaré comme trigger soit tenu, et donc non allouable pour remplacement par la compilation, dès que le fichier est ouvert.
Je le comprendrais si le fichier était tenu en mise-à-jour, mais là, c'est en lecture simple, donc on sait que le trigger ne sera pas déclenché...
Je vais peut-être essayer d'ouvrir un dossier au point service.
Merci pour les différentes réponses.
Je le comprendrais si le fichier était tenu en mise-à-jour, mais là, c'est en lecture simple, donc on sait que le trigger ne sera pas déclenché...
Je vais peut-être essayer d'ouvrir un dossier au point service.
Merci pour les différentes réponses.