2015-10-21 6 views
1

Рассмотрим следующую таблицу, совершенно случайно для примераПолучить последний добавленный ряд сложных первичный ключ

CREATE TABLE `test` (
    `key` int(11) NOT NULL, 
    `id2` varchar(255) NOT NULL, 
    `id3` varchar(255) NOT NULL, 
    `text` varchar(255) NOT NULL, 
    PRIMARY KEY (`key`,`id2`,`id3`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

мне нужно вставить и получить уникальный идентификатор вставленной строки, которая будет сложный первичный ключ. Если бы у меня был первичный ключ одного столбца, я бы использовал PDO::lastInsertId, но если я его использую в этом случае, я получаю результат string(1) "0" для оператора INSERT INTO test VALUES (1, 1, 1, 'test'). Есть ли способ получить столбцы первичного ключа сложного ключа после вставки? В этом конкретном случае из вышесказанного мне нужно получить array(1, 1, 1)

+0

Совокупный ключ не может быть сгенерирован базой данных, поэтому значения должны быть предоставлены вашим запросом INSERT. Возникает вопрос: зачем извлекать ключ, когда значения уже известны вашему скрипту? – syck

+0

@syck Это хороший вопрос, но объяснение непросто. Я создаю генератор кода, и он немного сложный (для меня). –

ответ

1

mySQL может вернуть вам последний вставленный ключ, только если поле создано системой, в противном случае невозможно будет восстановить последние сохраненные данные с функцией.

Вы можете найти сгенерированный идентификатор и получить каждый ключ со вторым выбором, но я не уверен, что производительность будет соответствовать вашим ожиданиям. Сожалею.

Смежные вопросы