Похоже, вы устанавливаете целочисленный столбец ref
в строку, содержащую инструкцию SQL:
set ref = '(SELECT (MAX(ref) + 1) AS max_ref FROM table1)'
Когда MySQL пытается преобразовать эту строку в целое число, оно заканчивается 0.
Правильный способ - опустить кавычки ''
, что ставит вас перед новой проблемой: MySQL не позволяет обновлять и выбирать из той же таблицы. Вы найдете решение для этого в обоих других ответах.