Ignore the request silently
I'm not sure how you could, anyway, except for the server closing the connection without sending a response.
400 is good, as is 409. You might also want to consider 403 Forbidden: the server understood your request, but refuses to fulfill it.
400, as a rule, for incorrectly formed requests.
403 is good when the request was well-formed enough that your server code was able to parse it and understand what the request was for. I think that most closely matches your requirement here.
However, the line in your question bothers me:
trying to specify a new value for a column that does not exist in the database
Queries must not change the values ββof columns in the database. They must modify the contents of the resource. These two options do not match. It's easy to fall into the trap of thinking "oh, just show this domain object as an HTTP resource", but this can lead to scalability issues in the string. In general, you should have more resources in the URI space than model objects. This allows you to cache fairly static portions of your model with different policies than those that are more dynamic.
For example, in an order processing system, the delivery address changes very rarely, but the progress tracker can change every few minutes. Specify two different URIs and different caching policies.
source share