回答

收藏

MySQL 1443:这是什么意思?

技术问答 技术问答 221 人阅读 | 0 人回复 | 2023-09-12

我在尝试 MySQL 5.0 以下形式更新:% m1 ~# `1 Z6 I7 K* P+ `
update mytable.myfield tset f = 'blah'where t.id in (select v.id from myview v where ...);MySQL 告诉我:' i5 p% j6 k6 \+ ?: D: r
ErrorNr. 1443The definition of table 'v' prevents operation UPDATE on table 't'.MySQL 文档列出了这个错误,但(像往常一样)没有解释它的意思。任何人都能向我解释吗?我只在子查询中引用视图,我只在主查询中引用表。我不知道为什么这些会阻止更新。google  发现的唯一一件事就是 MySQL 与触发器相关的错误数据库,但(AFAIK)在我的数据库中没有触发器。7 Z8 ^" J: @' e: T0 }* K
                                                                ) P# S+ f" N& R7 C
    解决方案:                                                               
, f! c! {3 q& F! q# E                                                                我认为视图myview必须基于表mytable,因此当它对myfield更改时,会失去对视图内容的跟踪,导致非法更新。
$ m4 y3 d- ^1 W& n% V建议查 myview 的定义,这样你就可以在不引用的情况下编写查询。所以你可以解决它。
! G' T2 K- k% I9 b. L5 p8 t或者,将 id 列表转储到临时表,用于您的子查询。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则