Rodrigo.. Como veo el trigger lo veo bien conceptualmente, perote pido un favor... mandame datos de ejemplo para hacer los ensayos.
Por que es nino.numhijos=1?
Fijate que el error se alojaba en que es necesario borrar primero de la tabla familia_x_hijos antes que borrar en las otras tablas. Por esta razón al tener dependencias, impedía que se borraran los datos. Lo pongo =1, ya que al momento de requerir el id_familia, debe existir aun ese dato. Posterior a obtener el dato de esta tabla se borra de la tabla familia_x_hijos, pero el valor almacenado en el record sigue siendo 1, en caso de que sea el ultimo. Si es mayor, se supone no debe entrar al if.
Si me dices que está fallando, el problema debe estar en el count, pero te solicito me mandes mas datos para ensayar. Cada que borro, hay que llenar varias tablas. y me da física pereza
Ya estamos cerca y de esta forma, es mas fácil llegar a una solución.
Un saludo rodrigo.