Категория
Информатика
Тип
реферат
Страницы
6 стр.
Дата
01.12.2008
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
21453.zip — 11.24 kb
  • problemy-sovmestnogo-dostupa-k-dannym-v-oracle_21453_1.rtf — 58.92 Kb
  • Readme_docus.me.txt — 125 Bytes
Рейтинг
10  из 10
Оценок
1
Оцените работу
Хорошо  или  Плохо


Текст работы

s для редактирования:
SELECT * FROM s FOR UPDATE
Этот запрос ужасен, но он является только примером. Дело в том, что запрос
выбирает все записи из таблицы, а значит, все они будут заблокированы для
других пользователей. Никогда так не поступайте. Если вам необходимо изменить всю таблицу, то можете сразу выполнять оператор UPDATE в определенной транзакции,— выбирать данные тут не имеет смысла. Если хотя бы одна строка окажется закрепленной за каким-то пользователем, то оператор UPDATE не пройдет и блокировка не поможет. Заблокировать таблицу можно еще с помощью оператора LOCKTABLE, но лучше все же выбирать с помощью запроса SELECT только те данные, которые нужны, и при этом указывать ключевые слова FOR UPDATE. Чаще всего работа с данными построена по принципу «окно реестра-окно редактирования». Например, у вас есть окно реестра документов, где пользователи могут просматривать счета, накладные и т.д. за определенный период времени. В этом окне происходит только просмотр, поэтому для выборки данных здесь не следует использовать блокировки, иначе это приведет к проблемам при многопользовательской работе. Если один пользователь выберет все документы за месяц, то остальные не смогут открыть данные за тот же период.
Листинг 1
rocedure TSorneDocurnent. ForrnShow (Sender: TObject); var
oldSql : String; begin
// сохраняем запрос и добавляем операторы блокировки
oldSql:=odsDocs. SQL. ;
OdsDocs.SQL.AddO FOR UPDATE NOWAIT');
try
// пытаемся открыть набор данных
odsDen;
odsDocs.Readonly :=false;
// проверяем, найден ли документ
if odsDocs.RecordCount=0 then
begin
Showmes sage ('Документ не найден, пока вы думали, его
уже удалили') ;
Close;
exit;



Ваше мнение



CAPTCHA