Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Inser ignore возвращение id / 12 сообщений из 12, страница 1 из 1
01.08.2013, 12:31:57
    #38351413
feddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
Вставляю значение через INSERT IGNORE и получаю средствами DBI(perl) ID вставленного значения $db->{mysql_insertid};
Если INSERT был то всё нормально, а вот если сработал IGNORE, то ID не возвращается. Каким бы запросом можно было-бы делать вставку, но в случае сработанного IGNORE вернуть id уже существующей записи? Одним запросом хочу это сделать.
...
Рейтинг: 0 / 0
01.08.2013, 13:12:17
    #38351521
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
См. функцию LAST_INSERT_ID() .
...
Рейтинг: 0 / 0
01.08.2013, 13:29:01
    #38351554
feddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
miksoftСм. функцию LAST_INSERT_ID() .
Хорошо, а как объеденить в один запрос INSERT с данной функцией
...
Рейтинг: 0 / 0
01.08.2013, 13:39:02
    #38351582
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
feddd,

у этой функции можно указать параметр
...
Рейтинг: 0 / 0
01.08.2013, 14:27:49
    #38351662
feddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
miksoftfeddd,

у этой функции можно указать параметр
Кст данная функция не подходит, т.к. когда при INSERT срабатывает IGNORE то данная функция возвращает результат последней реальной вставки данных, а не её попытки. А мне нужно в случае срабатывания IGNORE вернуть id уже имеющейся записи.
...
Рейтинг: 0 / 0
01.08.2013, 15:07:02
    #38351733
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
и id=LAST_INSERT_ID(id) не помогает?
...
Рейтинг: 0 / 0
01.08.2013, 15:50:46
    #38351796
feddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
miksoftи id=LAST_INSERT_ID(id) не помогает?
Покажите вариант полного запроса, я не могу понять, что вы имеете ввиду.

Код: sql
1.
2.
INSERT IGNORE INTO folder(parent_id, name) VALUES(1, 'folder1');
SELECT LAST_INSERT_ID();


Вернёт 0 при условии, что запись (1, 'folder1') уже существовала. А мне нужно в случае существования вернуть её ID, сейчас это делается двумя запросами, то есть проверяю если ID не вернулся, то делаю SELECT, вопрос в том, как это одним запросом сделать?
...
Рейтинг: 0 / 0
01.08.2013, 15:56:14
    #38351807
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
Код: sql
1.
INSERT INTO folder(parent_id, name) VALUES(1, 'folder1') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)

Код: sql
1.
SELECT LAST_INSERT_ID()

Сам не тестил, но, по идее, работать должно.
...
Рейтинг: 0 / 0
01.08.2013, 16:25:23
    #38351864
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
Не могу врубиться, вам же известен id. Сейчас он 1.
...
Рейтинг: 0 / 0
01.08.2013, 16:27:15
    #38351865
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
debloggerНе могу врубиться, вам же известен id. Сейчас он 1.Это другое поле.
...
Рейтинг: 0 / 0
01.08.2013, 16:46:18
    #38351895
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
Все равно. Если значение примари заранее неизвестно значит это новая запись, иначе - старая.


авторЕсли INSERT был то всё нормально, а вот если сработал IGNORE, то ID не возвращается.

Если сработал игноре то значит в валуях был дубликат ключа. Следовательно его можно посмотреть вычислив по признаку отсутствия того самого last_insert'а, или я в принцип не врубаюсь?
...
Рейтинг: 0 / 0
02.08.2013, 00:24:49
    #38352280
feddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inser ignore возвращение id
miksoft
Код: sql
1.
INSERT INTO folder(parent_id, name) VALUES(1, 'folder1') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)

Код: sql
1.
SELECT LAST_INSERT_ID()

Сам не тестил, но, по идее, работать должно.
Да. Так сработало, благодарю.

deblogger, нет суть вобще в другом))
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Inser ignore возвращение id / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]