MySQL 1443:这是什么意思?

时间:2009-08-04 02:32:08

标签: mysql 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文档列出了这个错误,但是(像往常一样)不说它意味着什么。任何人都可以为我阐明这一点吗?我只引用子查询中的视图,我只引用主查询中的表,我不知道为什么这些会阻止更新。我在谷歌找到的唯一一件事就是与触发器相关的MySQL bug数据库中的一个错误,但是(AFAIK)我的数据库中没有触发器。

1 个答案:

答案 0 :(得分:12)

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

我建议查看myview的定义,以便您可以编写查询而无需引用它。然后你就可以解决它。

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

罗布