А как правильно добавить запись в БД
От: _Lito  
Дата: 25.04.04 12:53
Оценка:
Есть таблица в которой храняться юзеры, у каждого свой идентификатор, как добавить нового пользователя так чтобы идентификатор был уникальным, но при этом и не вытаскивать из БД всех остальных, чтобы узнать их номера.
Меня интересует общепризнанная практика.
Re: А как правильно добавить запись в БД
От: Peter Fleischer Германия www.informtoools.de
Дата: 25.04.04 13:07
Оценка:
Здравствуйте, _Lito, Вы писали:

_L>Есть таблица в которой храняться юзеры, у каждого свой идентификатор, как добавить нового пользователя так чтобы идентификатор был уникальным, но при этом и не вытаскивать из БД всех остальных, чтобы узнать их номера.

_L>Меня интересует общепризнанная практика.

Бери в качестве идентификатора GUID!

Новый GUID можно так получить, не прочитывая БД:

Пример на VB.NET для использованмя в SQL-String:

Dim g As String = System.Guid.NewGuid().ToString("D")

Peter
Re: А как правильно добавить запись в БД
От: Igor Trofimov  
Дата: 25.04.04 13:53
Оценка:
_L>Есть таблица в которой храняться юзеры, у каждого свой идентификатор, как добавить нового пользователя так чтобы идентификатор был уникальным, но при этом и не вытаскивать из БД всех остальных, чтобы узнать их номера.

Этог кстати, было бы совершенно неправильно.
Re: А как правильно добавить запись в БД
От: dev26  
Дата: 25.04.04 18:51
Оценка:
Здравствуйте, _Lito, Вы писали:

_L>Есть таблица в которой храняться юзеры, у каждого свой идентификатор, как добавить нового пользователя так чтобы идентификатор был уникальным, но при этом и не вытаскивать из БД всех остальных, чтобы узнать их номера.

_L>Меня интересует общепризнанная практика.

Для этого есть sequence. Или auto_increment в mysql.
Если надо не зависить от БД, то завести маленькую табличку, куда писать последний использованный номер. Только в этом случае надо позаботиться о синхронизации.
Re[2]: А как правильно добавить запись в БД
От: fist Россия  
Дата: 26.04.04 05:01
Оценка:
Здравствуйте, Peter Fleischer, Вы писали:


PF>Бери в качестве идентификатора GUID!


PF>Новый GUID можно так получить, не прочитывая БД:


Взять в качестве id GUID очень хороший способ.
Единственно, не все базы данных поддерживают тип GUID и соответсвенно будут правильно индексировать по этому полю. В этом случае придется все же воспользоваться каунтером и получать id после инсерта.
Re: А как правильно добавить запись в БД
От: _Lito  
Дата: 26.04.04 07:56
Оценка:
А я тут нашел,что полю можно присвоить свойство identity, тогда СУБД сама выполняет контроль уникальности этого поля и не дает его менять.
Теперь с добавлением проблем нет, но вот мне надо добавить в другую таблицу данные использующие этот новый идентификатор, который СУБД создала сама.
Как можно быстрее всего его получить или надо новый SELECT запрос делать.
Re[2]: А как правильно добавить запись в БД
От: GarryIV  
Дата: 26.04.04 08:04
Оценка:
Здравствуйте, _Lito, Вы писали:

_L>А я тут нашел,что полю можно присвоить свойство identity, тогда СУБД сама выполняет контроль уникальности этого поля и не дает его менять.

_L>Теперь с добавлением проблем нет, но вот мне надо добавить в другую таблицу данные использующие этот новый идентификатор, который СУБД создала сама.
_L>Как можно быстрее всего его получить или надо новый SELECT запрос делать.

В поиск. Это вопрос каждые пару дней задают... Ищи лучше в db
... << RSDN@Home 1.1.3 stable >>
WBR, Igor Evgrafov
Re[2]: А как правильно добавить запись в БД
От: fist Россия  
Дата: 26.04.04 10:03
Оценка:
Здравствуйте, _Lito, Вы писали:

_L>А я тут нашел,что полю можно присвоить свойство identity, тогда СУБД сама выполняет контроль уникальности этого поля и не дает его менять.

_L>Теперь с добавлением проблем нет, но вот мне надо добавить в другую таблицу данные использующие этот новый идентификатор, который СУБД создала сама.
_L>Как можно быстрее всего его получить или надо новый SELECT запрос делать.

Да
SELECT @@IDENTITY
Re[3]: А как правильно добавить запись в БД
От: Peter Fleischer Германия www.informtoools.de
Дата: 26.04.04 15:23
Оценка:
Здравствуйте, fist, Вы писали:

F>Здравствуйте, Peter Fleischer, Вы писали:



PF>>Бери в качестве идентификатора GUID!


PF>>Новый GUID можно так получить, не прочитывая БД:


F>Взять в качестве id GUID очень хороший способ.

F>Единственно, не все базы данных поддерживают тип GUID и соответсвенно будут правильно индексировать по этому полю. В этом случае придется все же воспользоваться каунтером и получать id после инсерта.

Почему должен подерживать GUID еси ипсолзовать String (см. мой пример)? Не все БД поддерживают каунтер (напр. Jet + dBase)

Peter
Re[4]: А как правильно добавить запись в БД
От: fist Россия  
Дата: 27.04.04 15:01
Оценка:
Здравствуйте, Peter Fleischer, Вы писали:


PF>Почему должен подерживать GUID еси ипсолзовать String (см. мой пример)? Не все БД поддерживают каунтер (напр. Jet + dBase)


Я просто имел ввиду, что использовать GUID в качестве id без веских причин не очень хорошо. А уж тем более хранить его как строку, то есть для одного id будет использоваться 32 байта в строковом представлении, очень необдуманный шаг, результатом которого будут потери в скорости.
Хотя я не отрицаю, что использовать GUID для решения задач репликации и ряда вопросов связанных с проектированием распределенных баз данных просто необходимо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.