一尘不染

MySQL 1443:这是什么意思?

sql

我正在尝试在 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 文档列出了这个错误,但(像往常一样)没有说明它的含义。任何人都可以为我解释一下吗?我只在子查询中引用视图,我只在主查询中引用表,我不知道为什么这些会阻止更新。我在 google 上发现的唯一一件事是 MySQL 错误数据库中与触发器相关的错误,但是(AFAIK)我的数据库中没有触发器。


阅读 343

收藏
2021-06-08

共1个答案

一尘不染

我认为视图myview必须基于表mytable,因此当它对myfield进行更改时,它会丢失对视图中内容的跟踪,从而导致非法更新。

我建议查看 myview 的定义,这样您就可以在不引用它的情况下编写查询。那么你也许可以解决它。

或者,将 id 列表转储到临时表并将其用于您的子查询。

2021-06-08