SQLite Forum

Can DEFAULT be the only possible value?
Login
You would need a feature which has access to both the old and new versions of the value, and the simplest way to do that is, as you already mentioned, triggers.

Another way to do it would be to implement an authorizer function which refuses all updates to a certain column of a certain table.

<https://sqlite.org/c3ref/set_authorizer.html>

<code>#define SQLITE_UPDATE               23   /* Table Name      Column Name     */</code>

However, authorizer function is defined per application.  If you have just one app which changes the database this might be reasonable, but if you are defending against other apps making the change it won't work.