Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Узнать id обновленной записи


Автор: maxipub 10.6.2016, 17:22
Добрый день!

В таблице есть уникальный id. Но обновляется одна запись, подходящая по условию, по не уникальному полю some:

Код
UPDATE table SET row=123 WHERE some=456 LIMIT 1


Можно как-то узнать id обновленной записи? Что-то типа http://php.net/mysql_insert_id только для UPDATE?

Возможно, есть решение на самом MySQL?

ЗЫ: как вариант SELECT-ить id по условию WHERE some=456 LIMIT 1, затем обновлять по полученному id. Но может есть что-то стандартное а-ля mysql_update_id ? smile

Автор: ksnk 10.6.2016, 18:27
Цитата(maxipub @  10.6.2016,  17:22 Найти цитируемый пост)
Возможно, есть решение на самом MySQL?

Возможно http://stackoverflow.com/questions/1388025/how-to-get-id-of-the-last-updated-row-in-mysql поможет.
Код

SET @uids := null;
UPDATE table SET row=123 WHERE some=456
  and  ( SELECT @uids := CONCAT_WS(',', id, @uids) );
SELECT @uids;

Автор: _zorn_ 12.6.2016, 10:59
Цитата(maxipub @  11.6.2016,  00:22 Найти цитируемый пост)
 Но может есть что-то стандартное а-ля mysql_update_id ?

Советую не заморачиваться подобными "фишками"... 
Вначале это выглядит прикольно и т.п. но потом когда вы познаете ОРМ (а если не познаете то грош цена вам в крупных проектах) вам придется эти знания выкинуть на помойку.
Если конечно ваш профиль не DBA  smile 

Автор: maxipub 15.6.2016, 15:07
ksnk, блин, я потом как такие строки увижу в своем коде, точно не пойму что это такое... smile  smile 

Цитата(_zorn_ @  12.6.2016,  10:59 Найти цитируемый пост)
Советую не заморачиваться подобными "фишками"...

Какими именно "фишками"?

Цитата(_zorn_ @  12.6.2016,  10:59 Найти цитируемый пост)
а если не познаете то грош цена вам в крупных проектах

Я - одиночка. По крайней мере на этом поприще. Так что получается в крупном проекте - бесценен! Ведь окромя меня там никого. smile  smile 

Автор: vikagr11 10.6.2017, 17:55
автор по моему вы себя подгружаете ....  лишним http://dolan.com.ua

Автор: Vas 15.8.2017, 11:19
Цитата(maxipub @  10.6.2016,  17:22 Найти цитируемый пост)
Но обновляется одна запись, подходящая по условию

Сегодня одна, а завтра две, поля то не уникальные.

Цитата(maxipub @  10.6.2016,  17:22 Найти цитируемый пост)
ЗЫ: как вариант SELECT-ить id по условию WHERE some=456 LIMIT 1, затем обновлять по полученному id.

Как по мне, так это единственное правильное решение.

P.S. Хотя есть еще одно. Сделать набор обновляемых полей уникальным и делать REPLACE 

Автор: _zorn_ 16.8.2017, 17:33
deleted

Автор: Natalya96 14.12.2018, 22:13
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)