我有一个基于触发器插入的MYSQL表,我有一个使用该表的视图(并加入其他表)。当我的触发器触发并插入一个新行时,它在表中显示正常,但视图不会更新。有没有办法可以让视图更新,或者这是触发器的限制吗?
注意:定期插入表格可以更新视图,只有视图中缺少来自触发器的插入。
提前致谢。
答案 0 :(得分:1)
来自docs(我强调):
视图定义在创建时被“冻结”,因此更改为 之后的基础表不会影响视图定义。对于 例如,如果视图在表上定义为SELECT *,则新列 稍后添加到表中不会成为视图的一部分。
因此,您的触发器代码应包含ALTER VIEW
语句(如果您绝对确定该视图存在)或CREATE OR REPLACE
(如果您不是)。
有关MySQL views
的其他信息(与手头的问题无关),请参阅Restrictions on Views
。
答案 1 :(得分:1)
原来问题在于我用来创建视图的连接 - 我在从触发器插入过程中只有NULL的字段上有内部连接。我将它们切换到左连接,现在视图更新正常,无论插入是否来自触发器。
此外,@ PM-77-1的答案是正确的,但在这种情况下,我没有改变任何列,只是插入新的数据行。