mis*_*hra 4 mysql views sql-update
我正在创建一个视图来向用户显示他/她的数据,但我也希望用户能够在这些视图中的某些字段中进行更改.视图中所做的更改是否也反映在基表中?
另外,我是否可以更新由多个基表组成的视图?
有些视图是可更新的.也就是说,你可以在语句,如使用它们
UPDATE
,DELETE
或INSERT
更新基础表的内容.要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系.还有一些其他构造使视图不可更新.更具体地说,如果视图包含以下任何内容,则视图不可更新:
DISTINCT
GROUP BY
HAVING
选择列表中的子查询
某些连接(请参阅本节后面的其他连接讨论)
FROM
子句中的不可更新视图在子查询
WHERE
子句是指表在FROM
条款仅指文字值(在这种情况下,没有要更新的基础表)
使用
ALGORITHM = TEMPTABLE
(使用临时表总是使视图不可更新)对基表的任何列的多个引用.
[ deletia ]
假设可以使用
MERGE
算法处理多表视图,有时可以更新多表视图.为此,视图必须使用内部联接(不是外部联接或aUNION
).此外,只能更新视图定义中的单个表,因此该SET
子句必须只列出视图中其中一个表的列.UNION ALL
即使它们在理论上可以更新,也不允许使用它们,因为实现使用临时表来处理它们.