Подтвердить что ты не робот

Как получить идентификатор нескольких вставленных строк в MySQL?

Я вставляю несколько слов в таблицу с двумя столбцами с помощью этой команды:

INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
  • Как я могу получить идентификатор (первичный ключ) строки, в которую вставлено каждое слово. Я имею в виду возвращение значения типа "55,56,57" после выполнения INSERT. Имеет ли MySQL такой ответ?

  • Термин столбца UNIQUE. Если термин уже существует, MySQL не будет его вставлять. Можно ли вернуть ссылку для этого дублирования (т.е. Идентификатор строки, в которой существует этот термин)? Ответ вроде "55, 12, 56".

4b9b3361

Ответ 1

  • Вы получаете его через SELECT LAST_INSERT_ID(); или через вашу библиотеку фреймворка /MySQL (на любом языке) call mysql_insert_id().

  • Это не сработает. Там вам нужно запросить идентификаторы после вставки.

Ответ 2

Почему не просто:

SELECT ID
  FROM terms
 WHERE term IN ('word1', 'word2', 'word3')

Ответ 3

Во-первых, чтобы получить только что вставленный идентификатор, вы можете сделать что-то вроде:

SELECT LAST_INSERT_ID() ;

Уход, это будет работать только после вашего последнего запроса INSERT, и он вернет только первый идентификатор, если у вас есть множественная вставка!

Затем, с опцией IGNORE, я не думаю, что можно получить строки, которые не были вставлены. Когда вы создаете INSERT IGNORE, вы просто указываете MySQL игнорировать строки, которые должны были бы создать повторяющуюся запись.

Если вы не поместите эту опцию, INSERT будет остановлен, и у вас будет линия, связанная с дублированием.