Computed column is a virtual column in sql server, which is not stored physically in the table. It’s data is not materialized in the database and gets calculated during query execution on that column.
It takes it’s value from an expression and that expression can contain other columns to calculate a new value for the computed column.
Can it persist physically in the belonging table?
Yes, and to make it persist physically in table, just mark it as PERSISTED. By default it does not persist physically. In this case the data will be materialized in the table and will not be computed during query execution.
Without physical persistence:
With physical persistence:
- We can not target this column during insert and update.
- Default, Foreign key or NOT NULL constraints can not be applied to this column until it’s marked as PERSISTED.
- Readability : In case of some complex calculation