MySQL SELECT LAST_INSERT_ID () для составного ключа. Является ли это возможным?

Могу ли я получить ПОСЛЕДНИЙ INSERT ID () для составного ключа в MySQL?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
3
0
1 530
1

Ответы 1

Да. В одной таблице не может быть нескольких полей с автоинкрементом.

CREATE TABLE foo (
  id1 int(11) NOT NULL auto_increment,
  id2 int(11) NOT NULL default '0',
  PRIMARY KEY  (id1, id2)
);

INSERT INTO foo VALUES (DEFAULT, 2);

SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1

LAST_INSERT_ID() возвращает значение только для столбца, объявленного AUTO_INCREMENT. Нет функции для возврата значения в составном первичном ключе, который не было сгенерировал системой. Вы уже должны знать это значение, поскольку вы только что указали его в операторе INSERT. Сложный случай - это когда триггер или что-то переопределяет значение.

«Вы не можете иметь несколько полей с автоинкрементом в одной таблице». Я этого не знал, поэтому я попытался создать таблицу с двумя полями автоинкремента и получил следующую ошибку: Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ.

Liam 03.12.2015 00:57

Итак, 7 лет спустя ответ верен.

Sebastián Grignoli 29.06.2016 05:21

Другие вопросы по теме