PostgreSQL: el usuario de la base de datos solo debe tener permiso para llamar a funciones

Actualmente estoy usando PostgreSQL para mi aplicación. Como estoy tratando de poner cada SQL que contiene una transacción (es decir, insertar, actualizar, eliminar) en una función, me topé con este problema:

¿Es posible que a un usuario de la base de datos solo se le permita llamar a funciones y Declaraciones Selectas mientras que no puede llamar a Declaraciones SQL que contienen una transacción? Por "funciones de llamada" me refiero a cualquier función. Independientemente de si contiene una transacción o no.

Ya intenté crear un usuario que solo puede llamar a funciones y Declaraciones Selectas. Pero siempre termino con un error, al llamar a funciones que contienen transacciones. Por lo que entiendo, un dbuser necesita permisos de escritura si llama a una función que usa una instrucción de inserción, actualización o eliminación.

¿Me estoy perdiendo de algo? ¿Realmente no es posible este escenario? Desde el punto de vista de seguridad, esto sería realmente bueno porque, en primer lugar, previene la inyección de SQL.

Respuestas a la pregunta(1)

Su respuesta a la pregunta