Creería que la condición inicial, aplica unicamente para la ejecución de la regla, mas no para la sentencia que se va a ejecutar.
Debes incluir esta condición en la sentencia.
Código SQL:
Ver originalCREATE OR REPLACE RULE InsertOper AS ON INSERT TO Tb_Detalle_Operacion
WHERE NEW.MatriculaOdontologo = 2145
DO ALSO (UPDATE Tb_Detalle_Operacion SET TotalOper = 500 WHERE MatriculaOdontologo=2145);
La opción INSTEAD indica que cuando se cumpla la regla, se debe ejecutar dicha sentencia en lugar de la original, por lo que no te dejaría ingresar el registro original.
En el ejemplo que te doy, esta con la opción ALSO que permite ingresar la original y adicional a eso, se ejecuta la condición que quieras.
Pruebala y nos cuentas