¿Existe alguna alternativa nativa a "RAISE EXCEPTION" para devolver mensajes personalizados desde un Trigger (Set retorno proceso = NO)?

Hola.

Actualmente estoy implementando una arquitectura de seguridad “Zero-Trust” a nivel de servidor en mi ERP. Para garantizar que los permisos de los usuarios se respeten de forma absoluta sin depender de la UI, he centralizado la validación de permisos (RBAC) en Triggers de tipo Anterior a un alta/modificación/baja.

Si el usuario no tiene permiso, el Trigger bloquea la transacción usando Set retorno proceso = NO. Esto funciona perfectamente a nivel de base de datos.

Sin embargo, tengo un requerimiento de arquitectura para el manejo de excepciones y auditoría: Necesito que, al momento de rechazar la transacción en el Trigger, la base de datos pueda devolver un mensaje de error personalizado (ej. “Acceso Denegado. Ticket de rastreo: X8B9”) que se propague de forma nativa hasta el cliente que originó la petición.

Mi objetivo es que este mensaje personalizado aparezca:

  1. De forma nativa en la ventana de error del vDataClient.

  2. Como payload en la respuesta de error HTTP si la transacción fue originada por un Framework externo (como React) a través de un proceso expuesto como API REST.

Sé que en motores SQL tradicionales esto se resuelve con comandos como RAISE EXCEPTION o THROW, los cuales inyectan el texto del error en el cliente. Mi pregunta es:

¿Existe en la arquitectura actual de Velneo alguna instrucción o técnica nativa dentro del Trigger que permita sustituir el texto genérico de “Error en alta de ficha” y enviarle un string personalizado al vDataClient/API, sin tener que depender de leer Variables Globales programando manejadores de evento en cada formulario de la interfaz?

Agradezco mucho su orientación.

Hola xelcron dev02.

Creo que a nivel de la Base de datos no hay nada ni de lejos parecido a lo que estás buscando.

Ya hace más de 10 años que uso Velneo y también venía de SQL Server.
Tuve que adaptarme a las numerosas limitaciones de la base de datos de Velneo en lo que respecta al control de lo que ocurre en el vServer. De forma nativa no hay depuración en tercer plano, no hay control de errores, no hay gestión del log de transacciones, …

Velneo es una herramienta muy asistida que genera aplicaciones muy robustas siempre y cuando no te salgas del guión y como se decía antes “cambies el chip” respecto a lo que hayas usado antes.

  • En la plantilla vERP hay un sistema muy básico de log transaccional, pero sin control de errores.
  • En el API tienes el objeto vRegister que sí dispone de las funciones errorMesage() y errroNumber() para gestionar errores, pero no sirve a nivel de Trigger.

Saludos
Paco Satué