Código de error: 1422. La confirmación explícita o implícita no está permitida en la función almacenada o el activador

Por todas partes que veo, los procedimientos almacenados de MySQL pueden hacer transacciones. Sin embargo, cuando declaro mi función almacenada

create function test( a int )
returns int
MODIFIES SQL DATA
BEGIN
  START TRANSACTION ;
  update t set col='some value' where id=a ;
  COMMIT ;
  return 0 ;
END //

yo obtengo

Código de error: 1422. No se permite la confirmación explícita o implícita en la función almacenada o el activador.

Respuestas a la pregunta(1)

Su respuesta a la pregunta