Usually, the instead of update trigger is defined on a view, to modify data in one or more base tables.
In update statements that reference views with instead of update triggers, any subset of the columns in the view can appear in the set clause of the update statement, whether the columns in the subset are non-nullable columns or not.
Even view columns that can not be updated (those referencing columns in the base table for which input values cannot be specified) can appear in the set clause of the update statement. Columns you cannot update include:
Computed columns in the base table
Identity columns in the base table, for which identity insert is set to off
Base table columns of the timestamp datatype
Usually, when an update statement that references a table attempts to set the value of a computed, identity, or timestamp column, an error is generated, because Adaptive Server must generate the values for these columns. However, if the update statement references a view with an instead of update trigger, the logic defined in the trigger can bypass these columns and avoid the error. To do so, the instead of update trigger cannot update the values for the corresponding columns in the base table. To do this, exclude the columns in the set clause of the update statement from the definition of the trigger.
This solution works because an instead of update trigger does not need to process data from the inserted columns that are not updatable. The inserted table contains the values of columns not specified in the set clause as they existed before the update statement was issued. The trigger can use an if update (column) clause to test whether a specific column has been updated.
instead of update triggers should use values supplied for computed, identity, or timestamp columns only in where clause search conditions. The logic that an instead of update trigger on a view uses to process updated values for computed, identity, timestamp, or default columns is the same as the logic applied to inserted values for these column types.
The inserted and deleted tables each contain a row for every row that qualifies to be updated, in an update statement on a view with an instead of update trigger. The rows of the inserted table contain the values of the columns after the update operation, and the rows of the deleted table contain the values of the columns before the update operation.