Mirá. A mi me parece extraño lo que te pasa. Se supone que en la tabla factura hacés un insert del producto vendido más las actualizaciones de impuestos a las que vos te referís motivo por el cual, registro insertado, registro guardado. No entiendo por qué te pasa lo que decís.
El tema de tener en la tabla factura la FK de codigo_producto está perfecto pero lo único que se hace es ante una consulta que te traiga el nombre de la tabla Productos y nada más. La verdad, es extraño.
Con respecto a constrains acá tenés un
enlace.