Вы всегда можете использовать триггер. Что-то вроде:
create trigger dml_PreventUpdate
on YourTable
after update
as
if UPDATE(ItemId)
rollback
Существует два типа триггеров языка манипулирования данными (DML). Есть INSTEAD OF
и триггер AFTER/FOR
(функции AFTER
и FOR
работают одинаково). Триггер INSTEAD OF
, как следует из названия, выполняется до совершения транзакции. Триггер AFTER
, как и следует из названия, выполняется после инициируемого действия.
По сути, все, что делает этот триггер, - это проверка на предмет обновления столбца ItemId
из оператора UPDATE
, выполняемого для таблицы, YourTable
. Этот триггер срабатывает каждый раз, когда происходит UPDATE
против YourTable
, но он будет только ROLLBACK
транзакцию, если ItemId
является обновленным полем.