Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2013, 00:36   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию MySQL, уникальный ID, реализация

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

Речь пойдет об обеспечении уникальности идентификатора.
Есть некая таблица, куда добавляются строки.
Необходимо сделать так, чтобы каждая строка имела свой уникальный id.
Причем id должен быть уникальным не только в пределах таблицы SQL,
но и в пределах всего проекта на протяжении всего времени его существования.

Я все сделал сам, не имея представления как это сделать правильно.
В принципе все работает, но мне было бы интересно услышать мнение опытных
людей о такой реализации - оцените адекватность идеи =)
если не трудно опишите плюсы и минусы подходов.




// первая идея
1. создаем отдельную таблицу CurID;
2. в ней 1 столбец "CurID";
3. mysql_query("UPDATE CurID SET CurID=CurID+1 where 1;");
4. столбец "CurID" имеет тип Integer и длину 10 символов (миллиарда, думаю, хватит)

// вторая идея
1. в основной таблице создаем дополнительный столбец "CurID"
2. и дополнительный столбец "Row" (со значением "id");
(нужен только для определения именно той строки, в которой хранится значение CurID)
3. mysql_query("UPDATE MainTable SET CurID=CurID+1 where Row='id';");


Посоветуйте, как правильно сделать?
Заранее спасибо =)
xrob вне форума Ответить с цитированием
Старый 07.05.2013, 00:43   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Причем id должен быть уникальным не только в пределах таблицы SQL,
но и в пределах всего проекта на протяжении всего времени его существования.
это как ?
eval вне форума Ответить с цитированием
Старый 07.05.2013, 01:14   #3
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

eval, это значит, что ни у одной, из когда-либо добавленных записей, не повторялся id.
при этом будем учитывать, что записи могут удаляться из таблицы - т.е. мы не можем генерировать следующий id исходя из уже существующих
xrob вне форума Ответить с цитированием
Старый 07.05.2013, 01:15   #4
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

AUTO_INCREMENT
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 07.05.2013, 02:13   #5
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

да, кстати, когда-то начинал изучение MySQL, читал про это...
как я тогда понял из описания - что бы мы ни добавили в базу,
такой столбец будет постоянно увеличиваться...
потом я пробовал так сделать, но, видимо, что-то сделал не так, и это не работало как надо.
с тех пор забил на эту опцию, думал что она не актуальна...
xrob вне форума Ответить с цитированием
Старый 07.05.2013, 08:14   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

что-то подсказывает мне, что и в Делфях вы не герой... а так - выскочка. Ибо понятие автоинкремента и уникальных ключей есть во всех БД... и все "нормальные пацаны" этим пользуются широко
ADSoft вне форума Ответить с цитированием
Старый 07.05.2013, 08:42   #7
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Как я понял человеку надо уникальный ключ в пределах всей бд.
AUTO_INCREMENT - это уникальный ключ в пределай таблицы.
Тогда первый вариант более привлекателен, а как второй будет работать я не представляю. Поясните. И вообще зачем вдруг понадобились уникальные ID?
buriat вне форума Ответить с цитированием
Старый 07.05.2013, 09:03   #8
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

AUTO_INCREMENT почитайте в любом учебнике, не только по PHP(как можно быть героем если не знать даже что такое автоинкремент????)
kuba1981 вне форума Ответить с цитированием
Старый 07.05.2013, 10:48   #9
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

ADSoft, а вы никогда не задумывались, что в Delphi можно работать не только с БД?

buriat, не, уникальный в пределах таблицы вполне устроит =)
так что AUTO_INCREMENT мне подходит, им и воспользовался в итоге.
а уникальные ID нужны для того, чтобы гарантировано отличать одну запись от другой.

ну и так, пища для размышлений:
можно ли быть о****ным летчиком, не зная что такое самолет?
xrob вне форума Ответить с цитированием
Старый 07.05.2013, 10:54   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
а уникальные ID нужны для того, чтобы гарантировано отличать одну запись от другой.
мы прозрели на конец-то ..
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уникальный идентификатор типа brag Общие вопросы C/C++ 10 17.06.2012 20:33
Уникальный GUI интерфейс |{ot Общие вопросы C/C++ 6 03.07.2011 18:25
Уникальный идентификатор romets Win Api 9 03.02.2008 02:30