如何在触发器导致在视图中使用的表上插入后,如何更新MYSQL视图

时间:2014-08-17 00:58:03

标签: mysql sql triggers views

我有一个基于触发器插入的MYSQL表,我有一个使用该表的视图(并加入其他表)。当我的触发器触发并插入一个新行时,它在表中显示正常,但视图不会更新。有没有办法可以让视图更新,或者这是触发器的限制吗?

注意:定期插入表格可以更新视图,只有视图中缺少来自触发器的插入。

提前致谢。

2 个答案:

答案 0 :(得分:1)

来自docs(我强调):

  

视图定义在创建时被“冻结”,因此更改为   之后的基础表不会影响视图定义。对于   例如,如果视图在表上定义为SELECT *,则新列   稍后添加到表中不会成为视图的一部分

因此,您的触发器代码应包含ALTER VIEW语句(如果您绝对确定该视图存在)或CREATE OR REPLACE(如果您不是)。

有关MySQL views的其他信息(与手头的问题无关),请参阅Restrictions on Views

答案 1 :(得分:1)

原来问题在于我用来创建视图的连接 - 我在从触发器插入过程中只有NULL的字段上有内部连接。我将它们切换到左连接,现在视图更新正常,无论插入是否来自触发器。

此外,@ PM-77-1的答案是正确的,但在这种情况下,我没有改变任何列,只是插入新的数据行。