Keeping an audit trail normally means a trigger writing to a history table, which is code to maintain and a place for the two to drift apart.
CREATE TABLE prices (
sku VARCHAR(32) PRIMARY KEY,
amount INT NOT NULL
) WITH SYSTEM VERSIONING;
UPDATE prices SET amount = 5400 WHERE sku = 'FR-100';
SELECT * FROM prices FOR SYSTEM_TIME AS OF TIMESTAMP '2018-06-01 12:00:00';
SELECT * FROM prices FOR SYSTEM_TIME ALL WHERE sku = 'FR-100';
The old rows stay in the same table in a hidden partition, so ordinary queries are unaffected and the history is queryable with a clause rather than a join. It records what the row was and not who changed it, so it is not an audit log in the compliance sense — application-level attribution still has to be stored somewhere. Growth is the thing to plan for: a frequently updated table keeps every version until a partition is dropped, and nothing does that automatically.