Как получить идентификатор вставленной строки при вставке? - PullRequest
0 голосов
/ 29 марта 2011

Я хотел бы создать уникальный хэш поля AUTO-INCREMENT при вставке этой строки.Что-то вроде:

INSERT INTO `table` (`hash`,`salt`) VALUES (MD5(CONCAT(`id`,`salt`)),'1234789687');

Можно ли использовать идентификатор AUTO-INCREMENTED строки, пока я вставляю?Или мне нужно подождать, пока он будет вставлен, чтобы захватить его через PHP или что-то еще?

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Короткий ответ - нет, это невозможно.Если ваша база данных имеет низкий объем транзакции, то параллелизм может не быть проблемой для использования чего-то похожего на select max() (подвержен помехам): Можете ли вы получить доступ к значению автоматического приращения в MySQL в рамках одного оператора?

Я бы следил за вставкой в ​​php с обновлением

update `table`
set `hash` = MD5(CONCAT(`id`,`salt`))
where `id` = LAST_INSERT_ID();
1 голос
/ 29 марта 2011

Не знаю точно, но действительно сомневаюсь, что это возможно.Я понимаю, почему вы хотели бы подумать ... Не очень элегантно вставить строку, а затем сразу же обновить ее.

Я бы подумал, нужно ли вам действительно хранить хэш в БД или вы можете вычислить его во время выбора:

ВЫБРАТЬ MD5 (CONCAT (id, salt))ИЗ таблицы ГДЕ ...

...