MySQL id последовательность - PullRequest
3 голосов
/ 08 марта 2010

Это правильный способ генерации идентификатора в MySQL?

INSERT INTO Picture (PictureId, First_pick, название, описание, File_Name, Is_Vertical) ЗНАЧЕНИЯ
((ВЫБЕРИТЕ макс. (Pictureid) +1 ИЗ изображения), 0,?,?,?,?)

Я имею в виду, если гарантируется, что PictureId будет уникальным, когда этот запрос выполняется многими потоками?

Я не могу изменить структуру таблицы. Должен ли я использовать какие-либо конкретные блокировки, индекс или уровень изоляции транзакции?

С уважением, Михал

Ответы [ 3 ]

3 голосов
/ 08 марта 2010

Обычно вы используете поле AUTO_INCREMENT, которое позаботится о вас: Ручная

Но вопрос, тем не менее, хороший, я хотел бы услышать глубокий ответ от эксперта MySQL по этому вопросу. Насколько надежным было бы сделать это описанным способом?

2 голосов
/ 08 марта 2010

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

0 голосов
/ 08 марта 2010

Если вы действительно не можете использовать AUTO_INCREMENT, то вам обязательно нужно заблокировать таблицу для записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...