foxel:
Me gustaría actualizar una fila sólo si se cumple una condición en la otra fila.
algo como:
IF (SELECT `allow` FROM `accountlist` WHERE `id`='myid')<'1234'
THEN
IF (UPDATE `accountlist` SET `upvotes`=`upvotes`+1 WHERE `user`='myuser')
THEN (UPDATE `accountlist` SET `allow`='1234' WHERE `id`='myid');
END IF;
ELSE (/*return false*/);
END IF
en otras palabras, si permitirá que es inferior a 1.234 en myid , incremento upvotes en otra fila y si se configura succeded permiten a 1234 , de lo contrario devuelve valores de error falsos o algunos.
¿Es posible ejecutar varias consultas cuando se cumple una condición?
pasarán;
Es necesario expresiones caso como este:
UPDATE `accountlist`
SET `upvotes` = CASE WHEN `user`='myuser' THEN `upvotes` + 1 ELSE `upvotes` END,
`allow` = CASE WHEN `id` = 'myid' THEN '1234' ELSE `allow` END
WHERE (SELECT `allow` FROM `accountlist` WHERE `id`='myid') < '1234'
AND EXISTS (SELECT 1 FROM `accountlist` WHERE `user`='myuser')