Is a view in the database updatable?

The correct answer is "it depends". You can't update an aggregate column in a view for example. For Oracle views you can Google for "updatable join view" for some examples of when you can and cannot update a view.


Yes, they are updatable but not always. Views can be updated under followings:

  • If the view consists of the primary key of the table based on which the view has been created.

  • If the view is defined based on one and only one table.

  • If the view has not been defined using groups and aggregate functions.
  • If the view does not have any distinct clause in its definition.
  • If the view that is supposed to be updated is based on another view, the later should be updatable.
  • If the definition of the view does not have any sub queries.

The actual answer is "it depends", there are no absolutes.

The basic criteria is it has to be an updateable view in the opinion of the database engine, that is to say can the engine uniquely identify the row(s) to be updated and secondly are the fields updateable. If your view has a calculated field or represents the product of a parent/child join then the default answer is probably no.

However its also possible to cheat... in MS SQL Server and Oracle (to take just two examples) you can have triggers that fire when you attempt to insert or update a view such that you can make something that the server doesn't think updateable into something that is - usually because you have knowledge that the server can't easily infer from the schema.


PostgreSQL has RULEs to create updatable VIEWs. Check the examples in the manual to see how to use them.

Ps. In PostgreSQL a VIEW is a RULE, a select rule.