You have a global alt
(meta) value associated with an attachment(viewable when managed via "media" in the admin) that's stored in the post meta table, but on a post by post basis, the alt value you set when you use that piece of media into a post is stored more literally as a portion post content HTML.
The issue i think is that WordPress doesn't respect the global(main) attachment alt value and will update the attachment meta when you insert it into a post and set the alt text, whilst the specific post alt text (post content html) for that attachment will be whatever you set it to at the time it was inserted.
By calling update_post_meta
on _wp_attachment_image_alt
all you'll likely to achieve is a short term fix for setting what the current alt value is, it will likely change the next time you insert it and set a differing alt value.