- 1
UPDATE `xxx` SET `updated_count` = (UPDATE `yyy` SET `zzz` = 0 WHERE `zzz` = 42)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
UPDATE `xxx` SET `updated_count` = (UPDATE `yyy` SET `zzz` = 0 WHERE `zzz` = 42)
Минимальный код в моей проблеме. Проблема в том, что UPDATE должен возвращать число изменённых строк, а MYSQL говорит, что тут ошибка. Что же мне теперь делать?
https://dev.mysql.com/doc/refman/5.5/en/subqueries.html
А потом в следующем запросе используем полученное значение $cnt.
я не спец по скл, но я ни в одной базе не видел что бы апдейт (как скл стмт) что то возвращал. возвращать - в скл смысле слова - умеет только селект.
и как следствие в подзапросе может быть только селект. почему и спрашивал - а в каких диалектах скл апдейт умеет что либо возвращать?
Сначала нада mysql_query, а затем mysql_affected_rows.
Так что возврат прикрутили ради пыховцев, чтобы им меньше буков писать было
https://dev.mysql.com/doc/refman/5.7/en/mysql-query.html
https://dev.mysql.com/doc/refman/5.7/en/mysql-affected-rows.html
2 запроса в транзакции?
Вот так?
UPDATE `yyy` SET `zzz` = 0 WHERE `zzz` = 42;
SELECT ROW_COUNT();
COMMIT;
У тебя база данных на соседнем континенте, со связью по ISDN, и оплатой за каждый килобайт?
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_row-count
с другой стороны, эта функция в далёком прошлом была почти уникальна для мускля: по крайней мере сибас и оракакал ничего подобного не предоставляли, потому что апдейт делался от части асинхронно и спекулятивно, и количества строк которые поменялись те базы не считали и с какой либо точностью и не знали.
Инкаус не совсем прав по позикс: глобальный стейт и правда имел место в никсах и сях 70-х, но его уже очень давно отменили