:: Архив конференции по VFP до 2005 года
Проблема многопользовательского доступа!
Ujcnm
Автор
Подскажите кто знает решения такой проблемы.
Есть проэкт MSSQLServer + Foxpro8. Для доступа к данным на сервере используестя Remoteview, т.е. добавление, изменение, удаление. Представим ситуацию:
есть родительская таблица и несколько дочерних. При удалении данных из родительской таблицы срабатывает триггер для удаления из дочерних. Когда один пользователь просматривает запись из доч. таблицы, а другой в это время удалил запись из род. таблицы, то у первого возикает ошибка.
Можно конечно создать опрееленную таблицу, в кот. бы хранились номера редактируемых записей. И проверку осуществлять "Свободна ли ячейка?", используя триггер. тогда такие триггеры необходимо прописать для каждой таблицы. Но думаю в лисе есть стандартные возможности.
Кстати, будет ли нормально блокирование записей?
Ratings: 0 negative/0 positive
Re: Проблема многопользовательского доступа!
Петров Андрей

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
Скорее уж при удалении проверять редактирует кто запись или нет.

А вообще насколько оправдано использование каскадного удаления?




------------------
PS Недочитал тему до конца...
Ratings: 0 negative/0 positive
Re: Проблема многопользовательского доступа!
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Гость!

Некорректная постановка ведёт к бессмысленному ответу.

ЧТО по твоему должно происходить - распиши пошагово.

Я например считаю что правильная последовательность такова:

1) Пользователь 1 запросил шапку и строки документа1 в 2 курсора, смотрит
их.
2) Пользователь 2 запросил шапку и строки документа1 в 2 курсора, смотрит
их.
3) Пользователь 1 удалил шапку (и триггер удалил строки) - в базе реально
записей уже нет
4) Пока пользователь 2 не сделает перезапрос ("Обновление данных") - он
видит то что было в курсорах - т.е. уже реально удалённые записи.
5) Если пользователь 2 захочет откорректировать данные, то он не сможет их
сохранить = и это правильно - налицо конфликт обновления. Как вариант его
разрешения - заново ввести шапку и строки документа из локального курсора
пользователя2. Это правда потребует некоторого объёма кодирования, но вполне
решаемо.
Цитата:
Кстати, будет ли нормально блокирование записей?
Не надо опять начинать тему блокировок (в ПОИСКЕ найдёшь просто массу
материалов по теме клиент-сервер) - ну не предусматривает клиент-серверная
архитектура такого стиля работы! Помрёт ваш сервер если будет блокироваться
каждая выбранная для просмотра запись!

P.S. Как вариант можно сделать двухступенчатое удаление (как это делает сам
фокс) - т.е. реально DELETE не удаляет запись, а лишь "помечает" их как
удалённые - тогда процесс восстановления заметно проще (он аналогичен по
сути ПЕРЕЗАПИСИ чужих изменений - тут - флага удаления).




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика