Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
Je suis en train de faire une migration Oracle (11gr2) vers PostgreSQL (9.5.4) et j'ai commencé à réécrire un certain nombre de trigger en PL/pgSQL, et je rencontre un problème avec un trigger en particulier.
Supposons que j'ai un schéma A avec une table T1, et un schéma B avec une table T2 ayant la même structure que T1. T2 est une table qui va contenir les lignes supprimées de T1. J'ai donc un trigger after delete sur T1 qui fait juste un insert select OLD.* dans T2.
Le user qui exécute le delete dans T1 a uniquement des droits sur T1, et pas sur T2. Ça marchait comme ceci sous Oracle, et sous PG je suis obligé de donner au user des droits en écriture sur T2 pour que le trigger s'exécute. Y-a-t-il moyen d'empêcher ça ? Parce que je ne veux pas que le user puisse écrire directement dans T2.
Merci.
Juju.
Dernière modification par Juju (07/11/2016 17:27:38)
Hors ligne
Bonjour,
Le plus simple c'est de déclarer la fonction trigger en «security definer», et faire qu'un utilisateur ayant le droit de modifier t2 en soit le propriétaire.
Marc.
Hors ligne
Bonjour,
Effectivement je n'avais pas vu cette option dans la doc, ça marche parfaitement avec. Merci beaucoup !
Hors ligne
Pages : 1