Другой вариант - проверить, что значения в изменяемой записи остаются такими же, какими они были при запуске:
SELECT
customer_nm,
customer_nm AS customer_nm_orig
FROM demo_customer
WHERE customer_id = @p_customer_id
(отобразить поле customer_nm и пользователь изменяет его)
UPDATE demo_customer
SET customer_nm = @p_customer_name_new
WHERE customer_id = @p_customer_id
AND customer_name = @p_customer_nm_old
IF @@ROWCOUNT = 0
RAISERROR( 'Update failed: Data changed' );
Вам не нужно добавлять новый столбец в вашу таблицу (и поддерживать его в актуальном состоянии), но вы должны создавать более подробные операторы SQL и передавать new и old полей для хранимой процедуры.
Это также имеет то преимущество, что вы не блокируете записи - потому что мы все знаем, что записи останутся заблокированными, когда их не должно быть ...