Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отловить одинаковые данные в БД [D6, FireBird 1.0]


Страницы:   1 2

nik7777 ©   (2004-03-26 06:39:00) 

Приветствую всех Мастеров!!!
Help me!!!
Может я последний ламер или просто голову заклинило, в общем суть вопроса в следующем:
Есть Interbase(FireBird 1.0) и клиент для работы с ним написанный а Delphi. В дельфевой проге работа идет по транзакциям, каждый пользователь работает отдельно.
Например, таблица клиентов, куда вводятся фио, адрес и еще несколько реквизитов.
По идее до завершения транзакции я не увижу данных введенных соседом, а потому не смогу проверить, что такие данные в базе уже есть.
Подскажите механизм отлавливания одинаковых данных для таблиц, буду очень благодарен.
Если что дайте ссылку.


Andery   (2004-03-29 08:46:00) [21]

Возможно прийдется писать триггер на вставку и проверять уникальность строк с созданием исключительной ситуации с объяснением причины.


Desdechado   (2004-03-27 15:12:00) [22]

а мне вообще непонятно, как могут с 2 компов одну информацию вводить ...
Если это заказ, или поставка со склада, или чел на прием к врачу пришел - он же ОДИН раз регистрируется. Как несколько копий получается бумажных?!


nik7777   (2004-03-27 05:51:00) [23]

TO Sergey13:
Попробовал создать уникальные индексы - работает.
Спасибо!

Так же благодарю всех Мастеров, которые чем-то помогли мне.


Sergey13   (2004-03-26 12:55:00) [24]

2nik7777   (26.03.04 11:56) [9]
Да все просто. Если уникальный индекс есть, фиг ты закомитишь чего несоответствующего. Реакция программы на "фиг" зависит от тебя. 8-)


Соловьев   (2004-03-26 12:06:00) [25]

2 nik7777   (26.03.04 11:56)
никак пока не зокомитишь :)
или перед сохранением делай запрос к БД и исчи двойника... Правда нет гарантии, что пока ты сделаешь этот запрос кто-то не закомитит такую же запись.. Один выход - лови при комите ексепшн и все. Давай инфу пользователю - пусть он решает что делать.


nik7777   (2004-03-26 11:59:00) [26]

TO Alex_Bredin:
Что ты этим хотел сказать,ID поля есть в каждой таблице (каждая запись с уникальным номером)...


nik7777   (2004-03-26 11:56:00) [27]

Даже если будут уникальные индексы, как мне определить при незавершенной транзакции что запись уже существует...
например есть индекс по номеру паспорта, дате рождения и вводятся одновременно одинаковые данные, как быть в таком случае???


Sergey13   (2004-03-26 09:39:00) [28]

ИМХО, вопрос был несколько про иное (автор исчез и подтвердить/опровегнуть некому 8-). Это проблема смысловых записей-двойников. Типа "Фирма Рога и копыта" и "ООО Рога и копыта". Програмно она не решается, или вернее решается не до конца и не окончательно. При этом сама работа очень сложная и ресурсоемкая.
Самое правильное - обязать кого либо из персонала следить за этим и предоставить ему инструментарий для исправления возникших коллизий. При этом можно попробовать примитивно искать "похожие" записи при вставке и выдавать предупреждения оператору. Ну и конечно постараться выделить реквизиты, на которые можно однозначно навесить уникальность, типа ИНН.


Alex_Bredin   (2004-03-26 09:11:00) [29]


> nik7777   (26.03.04 06:39)  

возьмите за правило заводить в каждой таблице поле ID


Anatoly Podgoretsky   (2004-03-26 09:06:00) [30]

А по вопросу только по всем, иначе это разные записию


Deniz   (2004-03-26 07:11:00) [31]

Так и вопрос точно не указывает по каким критериям определяется, что "такие данные в базе уже есть". Вот если бы автор указал критерий(например таб.№ или №страхового полиса или еще что) тогда можно было бы конкретнее ответить, а так однофамильцев по ФИО тоже может быть в теории.


Fay   (2004-03-26 06:51:00) [32]

Имелось ввиду "по каким" 8)


Fay   (2004-03-26 06:50:00) [33]

И по какомим же полям индекс Вы предлагаете создать?


Deniz   (2004-03-26 06:49:00) [34]

Уникальный индекс + отлов Exception


ЮЮ   (2004-03-26 06:42:00) [35]

Неужели один и тот же клиент может оказаться около двух компьютеров одновременно? :-)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо