- 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 говорит, что тут ошибка. Что же мне теперь делать?
Dummy00001 16.10.2017 21:50 # 0
inkanus-gray 16.10.2017 22:10 # 0
https://dev.mysql.com/doc/refman/5.5/en/subqueries.html
Dummy00001 16.10.2017 22:14 # 0
inkanus-gray 16.10.2017 22:23 # 0
А потом в следующем запросе используем полученное значение $cnt.
Dummy00001 16.10.2017 22:30 # +1
я не спец по скл, но я ни в одной базе не видел что бы апдейт (как скл стмт) что то возвращал. возвращать - в скл смысле слова - умеет только селект.
и как следствие в подзапросе может быть только селект. почему и спрашивал - а в каких диалектах скл апдейт умеет что либо возвращать?
inkanus-gray 16.10.2017 22:28 # 0
SemaReal 16.10.2017 23:36 # +1
Сначала нада 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
inkanus-gray 16.10.2017 22:03 # 0
bormand 16.10.2017 22:18 # +2
2 запроса в транзакции?
inkanus-gray 17.10.2017 20:38 # 0
Вот так?
bormand 17.10.2017 20:41 # 0
SemaReal 17.10.2017 20:42 # 0
UPDATE `yyy` SET `zzz` = 0 WHERE `zzz` = 42;
SELECT ROW_COUNT();
COMMIT;
SemaReal 16.10.2017 23:37 # 0
У тебя база данных на соседнем континенте, со связью по ISDN, и оплатой за каждый килобайт?
Fike 17.10.2017 01:49 # +1
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_row-count
inkanus-gray 17.10.2017 06:38 # +1
Dummy00001 17.10.2017 17:20 # +1
с другой стороны, эта функция в далёком прошлом была почти уникальна для мускля: по крайней мере сибас и оракакал ничего подобного не предоставляли, потому что апдейт делался от части асинхронно и спекулятивно, и количества строк которые поменялись те базы не считали и с какой либо точностью и не знали.
Fike 21.10.2017 22:17 # +3
roskomgovno 03.08.2018 02:05 # 0
Инкаус не совсем прав по позикс: глобальный стейт и правда имел место в никсах и сях 70-х, но его уже очень давно отменили