Форум: "Базы";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизСкорость поиска Найти похожие ветки
← →
VadimSpb (2007-03-06 12:14) [0]Добрый день!
Перед вводом записи в БД проверяю ее на уникальность. Какой метод будет работать быстрее: Locate или запрос на выборку?
← →
Ega23 © (2007-03-06 12:28) [1]Зависит от множества факторов.
Лично я предпочитаю второе.
← →
sniknik © (2007-03-06 12:43) [2]проверкой на уникальность должен заниматься сервер, при или непосредственно перед вставкой... иначе прога будет лишена "высокого звания многопользовательской..." ;о))
ни один из приведенных способов не отвечает этому требованию (про локейт по локальному рекордсету (который может час назад получен) и говорить нечего, а решение о уникальности/нет на клиенте с помощью запроса может быть "испорчено" вставкой аналогичного значения "в момент действий по решению" другим клиентом (ну вот 2 одновременно послали запрос на выборку одного и тогоже...))
← →
Ega23 © (2007-03-06 12:47) [3]
> а решение о уникальности/нет на клиенте с помощью запроса
> может быть "испорчено" вставкой аналогичного значения "в
> момент действий по решению" другим клиентом (ну вот 2 одновременно
> послали запрос на выборку одного и тогоже...))
>
Когда проверка идёт в рамках SP? Да ладно...
← →
sniknik © (2007-03-06 13:09) [4]> Когда проверка идёт в рамках SP? Да ладно...
в процедуре это уже можно говорить о принятии решении о уникальности на сервере.
в вопросе о процедурах ни слова, лиш о запросе. т.е. смею предположить речь шла о такой схеме - клиент делает запрос с условием и анализирует ответ, если выборка чтото вернула значит такие значения есть, посылать повторно то же значение нельзя, если же выборка пустая то выполняется (может предварительно еще и формируется) запрос на вставку...
так в общем, хотя могут быть вариации (счас автор "проснется", скажет).
← →
VadimSpb (2007-03-06 13:43) [5]Речь идет о "Лицевом счете". Он д.б. уникальным и м.б. с буквами. Если бы требовались только цифровые значения, можно было использовать ключевое поле.
← →
Sergey13 © (2007-03-06 13:46) [6]> [5] VadimSpb (06.03.07 13:43)
Как это все друг с другом связано?
В огороде бузина, а в Киеве дядька.
← →
Ega23 © (2007-03-06 13:46) [7]
> Речь идет о "Лицевом счете". Он д.б. уникальным и м.б. с
> буквами. Если бы требовались только цифровые значения, можно
> было использовать ключевое поле.
А почему нельзя рядом тупо Identity-поле положить, назначить ключевым его? А на номер счёта - тупо unique-индекс наложить?
← →
sniknik © (2007-03-06 13:59) [8]> Речь идет о "Лицевом счете". Он д.б. уникальным и м.б. с буквами.
вообще ожидалось не инфа по тому что ты делаешь(хотя тоже полезно), а инфа о том как ты это делаеш... разница однако.
> Если бы требовались только цифровые значения, можно было использовать ключевое поле.
ты чтото путаешь, ключевое поле с автоинкрементом и ключ с уникальностью.
совершенно неважно есть или нет буквы в значениях поля для назначения его ключем... и тебе не нужен ключ по этому полю чтобы сделать его уникальным (уникальность ключа это всеголишь одно из его свойств, которое есть и отдельно. индекса с уникальностью достаточно)
← →
VadimSpb (2007-03-06 14:06) [9]
> а инфа о том как ты это делаеш...
Пока сделал выборкой. Поле nvarchar(50). Сервер не позволяет его сделать уникальным.
← →
Ega23 © (2007-03-06 14:10) [10]зачем nvarchar? Почему не varchar? Ты с юникодом работаешь?
← →
VadimSpb (2007-03-06 14:16) [11]
> Почему не varchar?
Не принципиально.
← →
Ega23 © (2007-03-06 14:17) [12]
> Не принципиально.
>
Отнюдь.
← →
VadimSpb (2007-03-06 14:19) [13]
> sniknik © (06.03.07 13:59) [8]
Согласен :-)) Так как лучше сделать данное поле?
← →
Ega23 © (2007-03-06 14:25) [14]
> Согласен :-)) Так как лучше сделать данное поле?
Данное поле лучше:
1) Убрать ключ с nvarchar
2) Рядом положить ключевое поле int (identity или нет - не принципиально)
3) Поменять nvarchar на varchar
4) Наложить на поле уникальный индекс
5) Всё обернуть хранимой процедурой и все проверки делать уже в ней
← →
VadimSpb (2007-03-07 11:34) [15]Решил просто.
ALTER TABLE TableName ADD CONSTRAINT UQ_FieldName UNIQUE (FieldName)
← →
Ega23 (home) (2007-03-07 11:39) [16]Ну до 3-й нормальной формы всё равно не дотянул... :)
← →
Johnmen © (2007-03-07 20:24) [17]
> Ega23 (home) (07.03.07 11:39) [16]
Он таких букаф не знает, ибо не в курсе основ теории построения баз данных. Что печальною. Но, как обычно...
← →
MsGuns © (2007-03-07 20:58) [18]Гадали восемь поросят
С какой приправой их едят ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c