我正在尝试在 MySQL 5.0 中进行以下形式的更新:
update mytable.myfield t
set f = 'blah'
where t.id in (select v.id from myview v where ...);
MySQL 告诉我:
ErrorNr. 1443
The definition of table 'v' prevents operation UPDATE on table 't'.
MySQL 文档列出了此错误,但(像往常一样)没有说明它的含义。有人能为我解释一下吗?我只引用子查询中的视图,并且只引用主查询中的表,我不知道为什么这些会阻止更新。我通过谷歌发现的唯一一件事是MySQL错误数据库中与触发器相关的错误,但是(据我所知)我的数据库中没有触发器。
我认为观点myview必须根据表mytable,这样当它改变时myfield,它会失去对视图中内容的跟踪,因此导致非法更新。
我建议查看 myview 的定义,以便您可以在不引用它的情况下编写查询。然后你也许就能解决这个问题。
或者,将 id 列表转储到临时表并将其用于子查询。
Rob
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)