Это потому, что ваше обновление может быть цикличным ... что если обновление этой записи вызовет что-то, что привело к условию WHERE
FALSE
? Вы знаете, что это не так, но двигатель - нет. В операции также могут быть противоположные блокировки на столе.
Я думаю, вы могли бы сделать это так (не проверено):
UPDATE
giveaways
SET
winner = '1'
ORDER BY
id DESC
LIMIT 1
Подробнее