Depende de las características de tu aplicación. No estoy seguro si interbase/firebird permite mas de una transacción corriendo concurrentemente en una misma sesion... que también puede ser una limitante. Lo comun, es tener una sola transacción abierta en un momento determinado en todo el programa, pero puede variar según el enfoque que le des. Eso si, tener una transacción por cada evento, no me parece factible, ni funcional ni recomendable.
Hasta luego.