Cita: CREATE TRIGGER Actualizacion_Id BEFORE INSERT ON GENERO
FOR EACH ROW
BEGIN
DECLARE @CONT;
SET @Cont= (SELECT MAX(CODGENERO) FROM GENERO);
IF @CONT IS NULL THEN
SET @CONT=1;
ELSE
SET @Cod = @Cont + 1;
END IF;
SET NEW.CODGENERO=@COD;
END;
No has considerado la posibilidad de que la tabla esté vacía. Eso te devolvería NULL y todo NULL al que se suma un valor resulta igual a NULL.
Por otro lado NEW.campo es la referencia al nuevo registro que se está insertando. El trigger tal y como lo estás construyendo entraría en un loop infinito, porque al final estas haciendo un INSERT que vuelve a llamar al trigger y así sucesivamente.
Además, la variable @Cont no estaba definida.