• Actually, to continue my response, you are correct in saying that an app, if it does a "blanket" UPDATE to all columns, will create history table rows, regardless of whether an individual column has changed.

    This is why an earlier (ASP.Net) web app I wrote was required to compare column values to see if they'd changed, and then dynamically prepare an UPDATE to only those columns that had value changes. This places a bit more burden on the app builder, but if you truly want to capture individual column changes, it's necessary.