Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL 1443: what does it mean?

Tags:

sql

mysql

I'm trying to do an update, in MySQL 5.0, of the form:

update mytable.myfield t
set f = 'blah'
where t.id in (select v.id from myview v where ...);

MySQL tells me:

ErrorNr. 1443
The definition of table 'v' prevents operation UPDATE on table 't'.

The MySQL docs list this error, but (as usual) don't say what it means. Can anyone shed some light on this for me? I only reference the view in the subquery, and I only reference the table in the main query, and I don't know why these would prevent the update. The only thing I found with google is a bug in the MySQL bug db related to triggers, but (AFAIK) there are no triggers in my db.

like image 280
Ken Avatar asked Aug 04 '09 02:08

Ken


1 Answers

I think the view myview must be based on the table mytable, so that as it makes changes to myfield, it loses track of what's in the view and therefore makes for an illegal update.

I would recommend looking at the definition of myview, so that you can write your query without referencing it. Then you may be able to work it out.

Alternatively, dump the list of ids to a temporary table and use that for your subquery.

Rob

like image 54
Rob Farley Avatar answered Sep 20 '22 14:09

Rob Farley