我正在尝试在MySQL 5.0中进行以下格式的更新:
update mytable.myfield t
set f = 'blah'
where t.id in (select v.id from myview v where ...);
Run Code Online (Sandbox Code Playgroud)
MySQL告诉我:
ErrorNr. 1443
The definition of table 'v' prevents operation UPDATE on table 't'.
Run Code Online (Sandbox Code Playgroud)
MySQL文档列出了这个错误,但是(像往常一样)不说它的意思.任何人都可以为我阐明这一点吗?我只引用子查询中的视图,我只引用主查询中的表,我不知道为什么这些会阻止更新.我在谷歌找到的唯一一件事就是与触发器相关的MySQL bug数据库中的一个错误,但是(AFAIK)我的数据库中没有触发器.
Rob*_*ley 12
我认为视图myview必须基于表mytable,因此当它对myfield进行更改时,它会丢失跟踪视图中的内容,从而导致非法更新.
我建议查看myview的定义,以便您可以编写查询而无需引用它.那么你也许能够解决它.
或者,将id列表转储到临时表,并将其用于子查询.
抢