admin

MySQL错误1443的解决方法

sql

我相信我的问题可以与标题几乎相同的另一个问题有关,但是不幸的是,答案对我来说还不够清楚,而且这个问题也已有6年历史了,也许对MySQL已有一些更改。

我想从表中删除行,甚至不从视图表中更新/插入/删除行,据我所知,不幸的是,mysql阻止了我们对引用视图表的表进行更改。我 需要
参考表格,该表格将我带到选项2和我的问题:

我如何“ 将列表转储到临时表中并将其用于子查询” 。还是 有一种变通办法使此代码正常工作

我正在使用MySQL版本5.6.12和我正在处理的代码:

DELETE FROM student
   WHERE (SUBSTR(student.stud_no,1,4) = 1234)
       AND NOT EXISTS
          (SELECT vr.stud_no FROM viewroom vr WHERE
           vr.stud_no = student.stud_no)
       AND NOT EXISTS
          (SELECT vlnr.stud_no,vlnr.status FROM viewlateststudentnr 
           vlnr WHERE (student.stud_no = vlnr.stud_no) AND (vlnr.status = 'confirmed') )

和错误:

1443-表’vr’的定义阻止了对表’student’的删除操作。


阅读 179

收藏
2021-06-07

共1个答案

admin

显然,您的视图必须包含要从中删除的表。这表明外部联接:

DELETE s
   FROM student s LEFT JOIN
        viewroom vr
        ON vr.stud_no = s.stud_no LEFT JOIN
        viewlateststudentnr vlnr
        ON s.stud_no = vlnr.stud_no AND vlnr.status = 'confirmed'
   WHERE SUBSTR(s.stud_no, 1, 4) = 1234 AND
         vr.stud_no IS NULL AND vlnr.stud_no IS NULL;
2021-06-07