Personalmente no le encuentro mucho el sentido de poner un VARCHAR para el código, si cada vez que necesitas crear un registro nuevo, debes convertirlo a un numero entero.
¿Por qué haces eso? ¿No sería más simple usar directamente un INT?
Fuera de eso, hay una condición que te estás olvidando: Las variables de usuario deben inicializarse siempre que se van a usar, o de lo contrario su valor es NULL. Y en MySQL toda operación de asignación, cálculo o concatenación entre cualquier valor y NULL da... NULL.
La cosa andaría mas o menos por acá:
Código MySQL:
Ver originaldelimiter $$
# Las variables de usuario siempre se deben incializar.
# Es más eficiente poner un INTO.
FROM items_configuracion_codigo
WHERE id
=NEW.id_configuracion
# El NULL es una condicion que se debe considerar y administrar.
FROM items_familia_grupo_subgrupo
WHERE id_familia
= NEW.id_familia
AND id_grupo
= NEW.id_grupo
AND id_empresa
= NEW.id_empresa
# El NULL es una condicion que se debe considerar y administrar.
delimiter ;