Можно ли получить текущий идентификатор первичного ключа auto_increment
из таблицы, которая не была таблицей, в которую было вставлено значение при последней вставке?
Ситуация, в которой я нахожусь, выглядит так:
1 - я вставляю оценку в таблицу Evaluation
.
2 - Затем я вставляю в таблицу Evaluation_Details
результаты для каждого вопроса, связанного с оценкой, используя last_insert_id()
и
3 - Я, наконец, вычисляю всю статистику, которая мне нужна для оценки, на основе результатов вопросов, и мне нужно обновить таблицу Evaluation
с ее помощью.
Теперь вот проблема. Мне нужно получить идентификатор последней вставки в таблицу Evaluation
, но теперь last_insert_id()
вернет идентификатор последней вставки в таблицу Evaluatin_Details
.
Все делается в одной транзакции, и каждая таблица имеет auto_increment
в своем идентификаторе.
Я знаю, что запрос:
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES"
WHERE TABLE_SCHEMA = 'database_name'
AND TABLE_NAME = 'table_name';
может дать мне значение для вставки следующего идентификатора, но я не думаю, что это хорошая практика - просто запрашивать это и вычитать 1, чтобы получить текущий идентификатор.
изменить: я забыл добавить, что возможно, что несколько пользователей вставляют данные одновременно. Вот почему я не использовал MAX(id) from table_name
.
Спасибо!
SELECT MAX(id) FROM table_name
? - person Joseph Silber   schedule 06.08.2013Evaluation_Details
, связанные с оценкой - person Tasos P.   schedule 06.08.2013AUTO_INCREMENT
...` не будет работать по той же причине, что иSELECT MAX(id)
. Что мешает получить id сразу после 1-й вставки? - person Vatev   schedule 06.08.2013Evaluation_Details
, используяlast_insert_id()
из вставки таблицыEvaluation
. Поскольку у вас есть этот идентификатор (я полагаю, в какой-то переменной), почему вы не можете использовать его для выполнения своего последнего запроса? Я очень надеюсь, что вы не используетеlast_insert_id()
при каждой вставке вEvaluation_Details
... - person Tasos P.   schedule 06.08.2013