Mensaje    Asunto: Gestionar excepciones en un trigger Responder citando

Estoy tratando de enterarme como funcionan los triggers. Muchas cosas las entiendo a la perfección pero hay algo que se me escapa totalmente: ¿Cómo gestionar las excepciones? Seguro que en el foro ya hay algo pero no he sido capaz de encontrarlo.

Tengo definido este trigger:

Código:
CREATE TRIGGER CONEXION_NEW FOR CONEXION
ACTIVE BEFORE INSERT
POSITION 1
AS
BEGIN
  NEW.Id_Conexion = GEN_ID(ID_Conexion, 1);
  WHEN GDSCODE unique_key_violation DO BEGIN
    EXCEPTION USUARIO_CONECTADO;
  END
END


y la excepción está definida así:

Código:
CREATE EXCEPTION USUARIO_CONECTADO 'Este usuario está activo en otro terminal'


para esta tabla:

Código:
CREATE TABLE CONEXION (
  ID_CONEXION INTEGER NOT NULL,
  NOMBRE VARCHAR(15) NOT NULL,
  PUESTO VARCHAR(20),
  HORA TIMESTAMP);

ALTER TABLE CONEXION ADD CONSTRAINT UQ_CONEXION UNIQUE (NOMBRE);


Tengo un módulo de gestión de errores (el código está simplificado):
Código:
if (E->ClassNameIs("EIBInterBaseError"))     // Si es una excepcion de interbase
{
     EIBInterBaseError *ErrorIB = reinterpret_cast<EIBInterBaseError>(E);

     MenErr = StringReplace(ErrorIB->Message, "\n", " ", oReplace);
     switch (ErrorIB->SQLCode)     // Si realmente es de interbase tratamos el codigo de error
     {
          case -204:
               [...]
               break;
          case -803:
               break;
          case -836:
               [...]
               return;
          case -902:
               [...]
               break;
          case -904:
               [...]
               return;
          default:
               [...]
               break;
     }
}

Sé que si trato de añadir un registro con un usuario que ya existe me va dar un error -803 y debería saltar la excepción. Lo que no acabo de comprender es cómo lograr que el programa me muestre el mensaje que he definido para esa excepción, ese USUARIO_CONECTADO. ¿Alguien me lo puede explicar?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)