数据库中的视图是否可更新?

Ava*_*esh 14 sql sql-server oracle postgresql

你能更新数据库中的视图吗?如果是这样,怎么样?如果没有,为什么不呢?

Mur*_*rph 17

实际的答案是"它取决于",没有绝对的答案.

基本标准是它必须是数据库引擎的可更新视图,也就是说引擎可以唯一地标识要更新的行,其次是可更新的字段.如果您的视图具有计算字段或表示父/子连接的乘积,则默认答案可能为否.

然而它也有可能作弊...在MS SQL Server和Oracle中(仅举两个例子)你可以在你试图插入或更新视图时激活触发器,这样你就可以做出服务器不认为的东西可更新为某种东西 - 通常是因为您知道服务器无法从架构中轻易推断出来.