Russian Qt Forum
Апрель 28, 2024, 09:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: how to get last insert or update id  (Прочитано 5064 раз)
lex_newton
Гость
« : Август 13, 2010, 12:39 »

Собственно, вопрос:

Среда:
    MySQL 5.0.X, mysql storage procedure

Имею запрос вида:

Код:
INSERT INTO
    t( x, y )
VALUES
    ( a, b )
ON DUPLICATE KEY UPDATE
    y = b;

Таблица имеет поля:
id : int, primary key, autoincrement
x  : int, unique
y  : int

После выполнения этого запроса в таблицу либо добавляется новая строка, либо обновляется существующая.

Задача:
получить id добавленной или обновленной строки.

При добавлении можно взять id путем LAST_INSERT_ID()

Как получить id после обновления - непонятно. Единственное решение, которое мне приходит в голову - это сделать select:
Код:
select id into last_id from t where x = a;

Но не очень хочется этого делать т.к. таблица будет иметь десятки и сотни тысячи строк, что может привести к снижению производительности даже при использовании индексов ( уникальное поле состоит из 2х полей ).

Может быть есть какое-то другое решение данной проблемы?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 13, 2010, 16:25 »

Код
SQL
INSERT INTO
   t( x, y )
VALUES
   ( a, b )
ON DUPLICATE KEY UPDATE
   y = b
RETURN id
 
Что-то типа этого где-то встречал.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.