Creo que gnzsoloyo tiene razón, pero si sólo quieres una actualización de datos ya cerrados puedes usar esto:
Código SQL:
Ver originalUPDATE `tabla` SET codigo = SUBSTRING_INDEX(SUBSTRING_INDEX(numero_inventario,'-',2),'-',-1)
WHERE numero_inventario REGEXP '[0-9]{4}-[0-9]{4}-[0-9]*-[0-9]*' = 1
la expresión regular controlará que pongas los datos en codigo sólo si antes del primer guión tienes 4 números, otros 4 entre el primer y segundo guión, luego tienes un número indeterminado entre este guión y el siguiente e igual al final. Dejará pues en blanco los codigo de los registros cuyo numero_inventario no cumpla estas condiciones. Luego podrás buscarlos y ver los problemas. También podríamos haber resuelto el problema del código buscando el primer guión y cuatro caracteres, aunque yo he usado dos substring_index.
Y he dicho al principio que gnzsoloyo tiene razón porque si añades un nuevo registro o simplemente lo modificas, tendrás que lanzar el update de nuevo. Lo ideal es hacer un store procedure o controlando y validando con programación con expresiones regulares, antes incluso de incluir o modificar el dato, es decir, con javascript y también con el programa que uses.