2010-09-28 2 views
-1

меня есть структура таблицы так:Увеличение значения случайного образом

users 
smf, user_id, group_id, status 

С каждым запросом значение ОВСА должно возрастать с текущим значением макс + случайным числом.

Вот запрос

INSERT INTO users SELECT(SELECT MAX(smf) + FLOOR(RAND() * 15 from invoices), 0, 0, '1'' 

Мой первый вопрос о том, что, как сохранить целостность параллельной правильной (макс (ID) не может дать мне последнюю строку I`ve вставили, так как кто-то другой может вставить так как я это сделал).

Мой второй вопрос о том, как получить значение FLOOR(RAND() * 15 без запуска второго запроса?

+1

В чем причина этого? Вы обеспокоены тем, что кто-то может угадать идентификатор, если вы использовали простую последовательность инкремента? Почему бы не использовать GUID (если они доступны в MySQL)? – FrustratedWithFormsDesigner

ответ

1

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

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