Workaround for MySQL’s “can’t specify target table for update in FROM clause” Error

0
309

jOOQ workaround for "can't specify target table for update in FROM clause"

In MySQL, you cannot do this:

create table t (i int primary key, j int);
insert into t values (1, 1);

update t
set j = (select max(j) from t) + 1;

The UPDATE statement will raise an error as follows:

SQL Error [1093] [HY000]: You can’t specify target table ‘t’ for update in FROM clause

People have considered this to be a bug in MySQL for ages, as most other RDBMS can do this without any issues, including MySQL clones:

  • MariaDB 10.2
  • SingleStore 6 (previously known as MemSQL)

Luckily, jOOQ can easily transform such queries for you, whenever you’re trying to UPDATE or DELETE a target table, with a predicate that depends on the target table itself. In those cases, jOOQ will just apply the following workaround:

update t
set j = (
  select *
  from (
    select max(j) from t
  ) t
) + 1;

Now, the query works without any syntactic issues. Similar workarounds are documented in the MySQL docs, but with jOOQ, you simply don’t have to think about this limitation.

Published by lukaseder

I made jOOQ

Patrocinado
Patrocinado
Patrocinado
Pesquisar
Virtualbook
CDN FREE
Categorias
Leia Mais
Início
Asbesthaltiger Boden & Bodenkleber & Floorflexplatten Wachtberg
Asbesthaltiger Boden & Bodenkleber & Floorflexplatten Wachtberg - Von Floorflex,...
Por Shabirkhan 7sk 2024-11-29 09:01:33 0 410
Outro
New patent suggests future Apple Pencil could draw on anything
New patent suggests future Apple Pencil could draw on anything (Image credit: Apple)...
Por Augestina Powers 2025-07-13 08:18:21 0 52
Art
A Fim da Farra: A Desregulamentação do Uso da Faixa de Carpool para Veículos Elétricos
veículos elétricos, faixas HOV, carros híbridos, governo dos EUA, transporte sustentável,...
Por Laura Isabella 2025-09-14 04:05:16 1 81
Food
Global Beer Market: Size, Share, Research Demand, and Forecast (2024–2032)
Beer Market Overview: The beer market can accumulate critical foothold at an outstanding speed...
Por Cassie Tyler 2024-11-27 06:21:10 0 433
Início
Asbestsanierung in Geldern 0231-98194868
Von A wie Asbesterkennung bis S wie Schadstoffanalyse. Wir helfen fachmännisch nach der TRGS...
Por Shabirkhan 7sk 2025-02-06 06:47:49 0 335
Patrocinado
Virtuala FansOnly https://virtuala.site