Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизКак проверить колличество одинаковых записей в поле Найти похожие ветки
← →
vodvorezlaya (2006-09-21 13:01) [0]Всем доброго времени суток.
Подскажите как проверить. После добавления записи в конец таблици (Append) существует там такая-же запись или нет?
Есть ли для этого специальный метод?
Спасибо.
← →
Павел Калугин © (2006-09-21 13:05) [1]А может логичнее проверять ДО добавления и не плодить дубликатов.
← →
zdm © (2006-09-21 13:05) [2]1. Уникальность полей.
2. Программно
← →
Johnmen © (2006-09-21 13:05) [3]Каков критерий "такая-же запись"?
← →
Sergey13 © (2006-09-21 13:05) [4]После добавления конечно же существует хотя бы одна. 8-)
Может тебе надо ДО проверять? Так это Locate или Select. Если ненужны дубликаты - уникальный индекс построй по полю.
← →
zdm © (2006-09-21 13:08) [5]джопустим добавляешь поле Name из компонента Edit
Select Name from Таблица Where Name=QuotedStr(Edit1.text);
open;
if Fields[0].Asstring="" then такого значения нет, спокойно вноси данные else "данные уже существуют пошли в пень"
← →
Desdechado © (2006-09-21 13:08) [6]> колличество одинаковых записей в поле
?!!
в поле нет записей
уникальный индекс (констрейнт) + ловля исключений при попытке записи
← →
zdm © (2006-09-21 13:10) [7]
> джопустим
:)
← →
Johnmen © (2006-09-21 13:31) [8]
> zdm © (21.09.06 13:08) [5]
> джопустим добавляешь поле Name из компонента EditSelect
> Name from Таблица Where Name=QuotedStr(Edit1.text);open;
> if Fields[0].Asstring="" then такого значения нет, спокойно
> вноси данные else "данные уже существуют пошли в пень"
А пока ты проверял, есть или нет, кто-то другой такую запись с таким значением поля добавил? Что делать? :)
← →
zdm © (2006-09-21 13:33) [9]а про транзакции ты слыхивал????
← →
zdm © (2006-09-21 13:36) [10]блин, я на другой волне PARADOX-же блин, ну ни как тогда!!!
← →
zdm © (2006-09-21 13:37) [11]
> А пока ты проверял, есть или нет, кто-то другой такую запись
> с таким значением поля добавил? Что делать? :)
Хоть тайм-аут какой-нибудь придумывай, типа, опросил базу-данных нет, еще разок-нет,, ну вноси значения только быстро :)))))
← →
zdm © (2006-09-21 13:42) [12]
> А пока ты проверял, есть или нет, кто-то другой такую запись
> с таким значением поля добавил? Что делать? :)
Хотя СТОП, если PARADOX, то как-бы это не сетевая БД и какие нахрен "другие вносят значения"?
← →
Johnmen © (2006-09-21 13:50) [13]
> zdm © (21.09.06 13:33) [9]
> а про транзакции ты слыхивал????
Да, где-то что-то такое слышал, краем уха... :)
А что? Они как-то соотносятся с Парадоксом в целом и с [5] в частности?
← →
Johnmen © (2006-09-21 13:53) [14]
> zdm © (21.09.06 13:42) [12]
> Хотя СТОП, если PARADOX, то как-бы это не сетевая БД и какие
> нахрен "другие вносят значения"?
Ну ты, наверное, знаешь, что Парадокс и в сети пользовать можно, не только монопольно...
Да чёрт с ним, с Парадоксом. Ты лучше про [5] и [8] растолкуй...:)
← →
zdm © (2006-09-21 13:57) [15]
> Да чёрт с ним, с Парадоксом. Ты лучше про [5] и [8] растолкуй.
> ..:)
про [8]. Типа открываешь транзакцию, если конечно БД поддерживает, начинаешь выполнять какие-либо действия с данными базы, и пока не скажешь COMMIT-ни хрена не произойдет, а вот уже непосредственно перед COMMIT делаешь опрос на совпадение, иначе ROLLBACK
← →
zdm © (2006-09-21 13:58) [16]а про [5], ты что хотел узнать?
← →
Johnmen © (2006-09-21 14:08) [17]
> zdm © (21.09.06 13:57) [15]
> а вот уже непосредственно перед COMMIT делаешь опрос на
> совпадение,
Ну сделал ты запрос. Время 00:00:00:000
Получил результаты, проанализировал, принял решение. Время 00:00::00:007
А я в этом промежутке времени вставил и закоммитил запись с тем же значением поля, на которое ты проверял и не нашёл.
Что делать? :)
← →
Sergey13 © (2006-09-21 14:12) [18]> [17] Johnmen © (21.09.06 14:08)
Ну ты и шустрый. В 7 милисекунд все дело испортил. 8-)
← →
zdm © (2006-09-21 14:14) [19]не стоп, лажа, ты чего вообще хочешь опровергнуть всю теорию построения реляционных БД, что-ли? Я прикалывался про тайм-ауты конечно, идеального варианта естественно не существует (мы тут с тобой какой-то философией занялись) если я вношу данные и говорю комит и ты одновременно вносишь точно такие-же данные, БД не даст кому-то из нас их внести, ну типа кто первый тот и прав...хотя... блин,,,,а вопрос действительно, ладно я щас подумаю еще просто некогда:)
← →
Johnmen © (2006-09-21 14:29) [20]
> ты чего вообще хочешь опровергнуть всю теорию построения
> реляционных БД, что-ли?
Нет. С чего ты взял???
Я всего лишь хочу сказать, что [5] и [15] - вот так никто не делает. Ну из тех, кто знает вышеупомянутую теорию и про эти, как их, транзакции.
>Sergey13 © (21.09.06 14:12) [18]
Не, это не я, это сервер :) Я готовился в внесению записи долго, а в указанный промежуток только коммит скомандовал :)
← →
zdm © (2006-09-21 14:31) [21]
> Johnmen
Не пудри мозги :)
← →
vodvorezlaya (2006-09-21 14:37) [22]
> джопустим добавляешь поле Name из компонента Edit
> Select Name from Таблица Where Name=QuotedStr(Edit1.text);
>
> open;
> if Fields[0].Asstring="" then такого значения нет, спокойно
> вноси данные else "данные уже существуют пошли в пень"
Ну я понял вроде то, но что дастName=QuotedStr(Edit1.text);
?
А допустим что есть таблица в которой данные Fields[0] повторяются, только в ручную их переименовывать?
(Имею в виду сортировать и в цикле проверять соответствие)
← →
zdm © (2006-09-21 14:38) [23]
> Я всего лишь хочу сказать, что [5] и [15] - вот так никто
> не делает. Ну из тех, кто знает вышеупомянутую теорию и
> про эти, как их, транзакции.
Хорош стебатся-то, я просто быстро предложил решение, не нравится не кушайте!
← →
zdm © (2006-09-21 14:41) [24]Name=QuotedStr(Edit1.text) даст допустим "Иванов Иван Иванович"
а Fields[0] это для примера, ты говоришь повторяются, так что тебе надо-то чтобы не повоторялись, тогда удали повторяющиеся записи,,, а если нельзя, тогда в запросе говори "select distinct"
← →
Johnmen © (2006-09-21 14:49) [25]
> Хорош стебатся-то, я просто быстро предложил решение, не
> нравится не кушайте!
Вот автор ветки и скушает. А потом придёт к тебе лицо бить за такие советы.
Спрашивается - тебе это надо?
:)
← →
zdm © (2006-09-21 15:28) [26]Блин, я хоть какое-то решение подсказал, а Вы вообще ни чего.
И что плохого в моем решении. Всегда можно опросить и на "чистое" совпадение и на "похожесть", а уже дальше принимать решение , вносить данные или нет
← →
Johnmen © (2006-09-21 15:43) [27]
> Блин, я хоть какое-то решение подсказал,
А что толку от кривого решения и кому оно надо?
> а Вы вообще ни чего.
Ну меряться пиписками я с Вами не буду. Видимо Вы сторонник персонажа из известного анекдота:
- У меня две новости, хорошая и плохая.
- Начни с плохой.
- В этом году неурожай, будем жрать г...о.
- А хорошая?
- Г...а много - всем хватит!
← →
vodvorezlaya (2006-09-21 16:00) [28]А вообще есть в Delphi такой метод Lookup и locate.
← →
Сергей М. © (2006-09-21 16:05) [29]
> vodvorezlaya (21.09.06 16:00) [28]
В делфи мно-о-ого еще чего есть)
Ты в [6] вник ?
← →
Mike Kouzmine © (2006-09-21 16:35) [30]zdm © (21.09.06 15:28) [26]
Johnmen © (21.09.06 13:05) [3]
Каков критерий "такая-же запись"?
← →
Anatoly Podgoretsky © (2006-09-21 21:31) [31]Sergey13 © (21.09.06 14:12) [18]
Законы Мерфи непреодолимы.
← →
Lex_! © (2006-09-22 06:05) [32]А что нельзя разве сделать поле уникальным по определению?...
(индексация, без совпадений... )
← →
vodvorezlaya (2006-09-22 08:03) [33]
> Ты в [6] вник ?
Да, но это не первое ключевое поле.
Перед ним ещё два ключевых поля.А с этим третьим ключевым и при попытке дублирования записи не возникает Exception.
← →
Сергей М. © (2006-09-22 08:34) [34]
> vodvorezlaya (22.09.06 08:03) [33]
Да по барабану первое оно у тебя или столохматое !
Важно чтобы для значений в этом поле был создан и активирован уникальный индекс. И если у тебя при попытке внесения в это поле неуникальной записи не возбуждается исключение, то это означает, что либо индекса такого и в помине нет, либо индекс этот неуникальный, либо он не активирован.
При соблюдении этих условий исключение будет обязательно возбуждено.
← →
evvcom © (2006-09-22 09:12) [35]> [24] zdm © (21.09.06 14:41)
А тебе нужен в твоем случае просто Иван Иваныч, или все же ты что-то про нормализацию слышал? ID этого Ивана Иваныча получать будешь? И что тогда тебе select distinct даст? Ась? :-)
> [22] vodvorezlaya (21.09.06 14:37)
> Ну я понял вроде то, но что даст Name=QuotedStr(Edit1.text)
Понял и молодец! Только лучше так не делай. Используй параметры, учись сразу программировать "правильно"!
← →
zdm © (2006-09-22 09:43) [36]С уникальностью полей тоже засада бывает.
1. Иванов Иван и иванов иВаН это разные данные для БД.
2. Lexx, про уникальность сразу писали
> evvcom ©
С параметрами, при запросах с большой вложенностью, бывает засада, хотя я конечно не спорю, что параметры юзать легче и проще.
← →
Sergey13 © (2006-09-22 09:53) [37]> [36] zdm © (22.09.06 09:43)
> С параметрами, при запросах с большой вложенностью, бывает засада
Какая? И насколько большой должна быть вложенность (вложенность чего, кстати), что бы на нее напороться?
← →
Johnmen © (2006-09-22 10:09) [38]
> zdm © (22.09.06 09:43) [36]
> С уникальностью полей тоже засада бывает.1. Иванов Иван
> и иванов иВаН это разные данные для БД.
Засада бывает у тех, кто не побеспокоился. А кто выставил правильные настройки (напр.не различать регистра) или в структуре таблиц учёл или в клиентском приложении, у того всё комильфо...
← →
zdm © (2006-09-22 10:51) [39]
> Johnmen ©
как выставить, различение регистра? правда не нашел, заранее спасибо
← →
Johnmen © (2006-09-22 10:59) [40]
> zdm © (22.09.06 10:51) [39]
> как выставить, различение регистра? правда
> не нашел, заранее спасибо
Для Парадокса никак.
Мы же говорим общё, о серверах БД. Для некоторых это возможно....
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.041 c