Уникальное число или простейший счётчик (нужен совет)

klepan

Новичок
Уникальное число или простейший счётчик (нужен совет)

Привет всем
есть 2 таблицы в базе mysql в которые записываются операции
есть задача получать на каждую операцию уникальное число ID
т.е. если в таблице №1 есть операции с ID 1, 2, 3 то в таблицу №2 следующая операция запишется с ID 4
ID должно быть монотонно увеличивающееся число
делаю так:
создал 3-ю таблицу с одной ячейкой ID
Увеличиваю на единицу ID
mysql_query ("update main set ID=ID+1 where 1");
потом делаю запрос ID
mysql_query ("select ID from main where 1");
и присваиваю его операции
не получится ли так что пока делается запрос ID после первого увеличения, произойдет еще одно увеличение ID и две операции получат одинаковый ID ?
каковы шансы на такой расклад
или если есть более простой и надёжный способ получения уникального числа
 

Romashov

экспериментатор
маленькие, если сразу выбираешь, вставляешь и увеличиваешь
Законный вопрос: ЗАЧЕМ только это тебе нужно?
 

Steamroller

Новичок
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html
вот на этой странице описано как такое делать, поиск по "simulate sequences".
 

klepan

Новичок
Автор оригинала: Romashov
маленькие, если сразу выбираешь, вставляешь и увеличиваешь
а что лучше делать сначала увеличивать а потом выбирать или наоборот?
или тут не принципиально

Законный вопрос: ЗАЧЕМ только это тебе нужно?
если б не нужно было бы не спрашивал
 

Romashov

экспериментатор
а что лучше делать сначала увеличивать а потом выбирать или наоборот?
или тут не принципиально
Я бы на твоём месте - взял бы файлик и писал в него число.
Считал => Заблокировал => Провёл операцию => если успешно, увеличил число и обновил файл => разблочил
 

syst3m

Новичок
а я бы брал максимальное ID с первой таблицы, прибавлял к нему 1, и писал его во вторую... и никаких доп. таблиц и файлов. :)
 

Dreammaker

***=Ф=***
syst3m, ага два процесса взяли одновремено макс id сделали + 1 и записались во вторую таблицу. В общем, с чем боролись на то и напоролись..
 

klepan

Новичок
Автор оригинала: Romashov
Я бы на твоём месте - взял бы файлик и писал в него число.
Считал => Заблокировал => Провёл операцию => если успешно, увеличил число и обновил файл => разблочил
я в програминге не силён т.ч буду делать на базе

Всем спасибо
 

SiMM

Новичок
Romashov, алгоритм неправильный.
2klepan, а зачем тут вообще две таблицы?
> есть задача получать на каждую операцию уникальное число ID
Ну так и заведи автоинкрементное поле
 

klepan

Новичок
> а зачем тут вообще две таблицы?

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

> Ну так и заведи автоинкрементное поле

в 3 таблице вместо увеличения на 1?
 

SiMM

Новичок
> вначале выполняется сбор инфы с совершенно разных операций - вот и 2 таблицы
Не убедил. Что мешало завести поле operation_id?
 

klepan

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

SiMM

Новичок
> инфа собирается от 2 разных сайтов
А если бы от 120?

> и чтоб не искать по каждому в одной таблице, сделал 2
Делай одну. Тем более, если содержимое таблиц несёт одинаковую смысловую нагрузку.
 

klepan

Новичок
> А если бы от 120?

было бы 120 таблиц

> Делай одну. Тем более, если содержимое таблиц несёт одинаковую смысловую нагрузку.

инфа по содержанию разная
просто потом делается одна и тажа операция которая должна иметь уникальный номер
 
Сверху