Is a MAC a valid way to ensure tamper-resistance? According to some government standards I need to be able to ensure some data in a database has not been tampered with.

My current idea is to store a MAC (HMAC-SHA256) next to each instance of the serialized data. The key will be stored in a separate location but the same key will be used for every MAC.

To detect tampering, I will read the data, compute the MAC again with the same key, and compare the computed MAC with the one stored in the DB. If they are equal, the data has not been tampered with, if they are different, than the data has been tampered with.

A weakness I am aware of is that if the key were to be compromised, we no longer can trust the MACs or the data. It would be possible to recompute the MACs, but they would only be valid for the data in the DB which we can no longer trust.

A few questions:


Is this a valid use case for a MAC?
Are there any major or minor flaws with this technique?
Is it OK to reuse the same HMAC key forever?
Would an asymmetric or AEAD solution be preferable?
First, you have to check if the HMAC integrity check complies to the governmental standard. In the USA, for instance, you have to check the FIPS specifications.
If that has been clarified then here are my answers:   


  is this a valid use case for a MAC?


Yes.    


  Are there any major or minor flaws with this technique?


The one you already stated.


  Is it OK to reuse the same HMAC key forever?


That is seldom a good idea, due to the "break once run everywhere" scenario.
I would instead use a Key derived from a Masterkey. The Key is on the database and the Masterkey on an seperate isolated device. From time to time you should change the Key by a new derivation form the Masterkey and some well known data.  


  Would an asymmetric or AEAD solution be preferable?


An asymmetric solution makes less sense here, because you have to store the private key on your database system anyhow.