Page 1 sur 1

Trigger SQL

Posté : dim. 23 août 2020, 10:46:19
par monthi
Bonjour

est il possible de connaitre le nom du programme qui a effectué l'opération sur la base de donnée comme on peut le faire avec un trigger RPG.

J'ai essayé en utilisant une procédure stockée basée sur la fonction quiappel trouvé sur le forum mais je n'obtient jamais le bon nom de programme.

Y a t'il un autre solution?

Cdlt

Re: Trigger SQL

Posté : lun. 24 août 2020, 07:52:34
par cmasse
je ne vois pas bien le contexte ?

Re: Trigger SQL

Posté : lun. 24 août 2020, 08:47:40
par nbonnet
Via la journalisation ?

Re: Trigger SQL

Posté : lun. 24 août 2020, 09:01:18
par vazymimil
Bonjour,

avec STACK_INFO c'est possible, par exemple

Code : Tout sélectionner

select
	program_name
from
	table(QSYS2.STACK_INFO('*')) A
where
	program_name is not null
	and (program_library_name not like 'Q%'
	or program_name in ('QZDASOINIT', 'QSQIMAIN'))
order by ordinal_position desc
limit 1;

Re: Trigger SQL

Posté : lun. 24 août 2020, 11:01:04
par monthi
bonjour à tous

on utilise les triggers pour historiser les opération sur la base de donnée pour certain fichiers sensibles.
on historise le type d'opération (creation, modification suppression), le programme a l'origine de l'opération, l'utilsateur ainsi que certaines donnée du fichier a pister.

Jusqu'à présent on utilise des triggers rpgle.

je voulais voir comment faire la même chose en trigger SQL mais je n'arrive pas a recuper le nom du programme.

La solution de Vasymimil me retourne le nom du trigger.

Cdlt

Re: Trigger SQL

Posté : lun. 24 août 2020, 17:44:41
par vazymimil
Alors quelque chose comme ça :

Code : Tout sélectionner

select
	program_library_name,
	program_name,
	procedure_name
from
	(
	select
		program_library_name, program_name, procedure_name,
		row_number() over(order by ordinal_position desc) pos
	from
		table(QSYS2.STACK_INFO('*')) A
	where
		program_name is not null
		and (program_library_name not like 'Q%'
		or program_name in ('QZDASOINIT', 'QSQIMAIN', 'QSQXCUTE'))
	)
where
	pos = 3;

Re: Trigger SQL

Posté : lun. 24 août 2020, 18:09:55
par monthi
Bonsoir Vasymimil

Cela semble fonctionné.

Merci beaucoup.

Cdlt

Re: Trigger SQL

Posté : mar. 25 août 2020, 11:47:44
par monthi
Bonjour

j'ai rajouter les programme suivant 'QCPGENIO', 'QDZXDBI' car j'avais des plantages lors de l'utilisation de cpyf et de DFU.

Cdlt