Me temo que como auto_increment, lo que quieres hacer es imposible, o al menos es inútil ponerlo como auto_increment si lo vas a usar así.
El auto_increment es un valor que se genera sobre la tabla
en el momento de la inserción. Tal es así que la función LAST_INSERT_ID(), que es la que te devuelve el valor generado, tiene valor cero (0) si la usas en un TRIGGER sobre la tabla, incluso si lo pones AFTER INSERT.
Por otro lado, si quieres el valor
antes de insertarlo, ¿qué sentido tiene que sea auto_increment? Para eso lo usas simplemente como INT y obtienes el valor a ingresar con un SELECT de tipo:
Si pones esto antes del INSERT y colocas todo dentro de una transacción, no deberías tener problemas y sería mucho más sencillo.