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

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

Уровень изоляции транзакций [D7, FB 1.5]


3APA3A ©   (2004-08-12 00:13:00) 

компоненте он выставляется (как называется это свойство)?
 И еще вопрос
 Уровень изоляции - DirtyRead
 Клиент А вставляет данные в таблицу, но Commit пока не делает
 1) Будет ли клиент Б видеть эти данные?
 2) Что произойдет в этими данными, если клиент А "неожиданно" отрубится от сервера?


jack128   (2004-08-14 14:14:00) [1]

Итак, вывод: Без коммита другие клиенты не могут увидеть изменения, зделанные твоим клиентом.
Если ты все таки сделал коммит, тут все сложнее, зависит параметров транзакций остальных клиентов. Если READ COMMITTED - то в остальных клиентах нужно переоткрыть ЗАПРОС, если же SNAPSHOT - то нужно рестартовать транзакции..

Еще раз советую заглянуть на wwww.ibase.ru


3APA3A   (2004-08-13 23:06:00) [2]

Да не зацикливайтесь на commit... Мне не важно - сделает клиент А commit или нет... Важно вот это

  Каждый клиент добавляет в таблицу какие-то свои, уникальные записи. Все остальные клиенты должны их видеть. Как только клиент A "отвалился" - записи надо удалить иначе получится "нехорошо"...   Хочется сделать это по возможности серверной логикой...
 Возможно ли это?


HSolo   (2004-08-13 13:06:00) [3]

>не увидят они эти изменения никак без рестарта своих читающих транзакций

Если уровень изоляции у них ReadCommited - увидят и без рестарта, достаточно переоткрыть наборы данных. Лишь бы писатель commit сделал


}{ander   (2004-08-13 12:37:00) [4]

2 Digitman
> не увидят они эти изменения никак без рестарта своих читающих
> транзакций

и без его каммита.

2 Iconka
> Но 3APA3A, помоему, хочет что бы клиент А еще не сделал
> commit, а другие уже видели эти данные. Или я не права?

такое, имхо, вообще не реализуемо, т.к. [1]


Digitman   (2004-08-13 11:14:00) [5]


> 3APA3A ©   (12.08.04 22:54) [5]



>    1) Клиент А записывает какие-то данные в таблицу


так. замечательно.


>    2) Клиент Б (В, Г, Д...) должен видеть эти данные


не увидят они эти изменения никак без рестарта своих читающих транзакций


>    3) При "неожиданном" отключении клиента А сервер должен
> сделать откат этих данных (откат или удаление)


он это и сделает, за автооткат не волнуйся ..
все изменения, сделанные в контексте модифицирующей транзакции, которую стартовал неожиданно "отвалившийся"  клиент, будут автоматически аннулированы сервером


Iconka   (2004-08-13 11:08:00) [6]


> [7] }{ander

Да, это стандартный алгоритм.

Но 3APA3A, помоему, хочет что бы клиент А еще не сделал commit, а другие уже видели эти данные. Или я не права?


}{ander   (2004-08-13 10:55:00) [7]


>   Мне вообще надо вот что реализовать

Клиент А делает изменения в таблице, тут же делает каммит. Вызывается events, сообщающий остальным о том, что что-то произошло (инсерт, апдейт и т.д.). Они переоткрывают наборы данных и видят все изменения.


Iconka   (2004-08-13 10:44:00) [8]

Помоему средствами сервера такое нельзя реализовать.


3APA3A   (2004-08-12 22:54:00) [9]

to Digitman
  Хм, IB/FB поддерживают только один уровень изоляции - ReadCommited?
 
  Мне вообще надо вот что реализовать
   1) Клиент А записывает какие-то данные в таблицу
   2) Клиент Б (В, Г, Д...) должен видеть эти данные
   3) При "неожиданном" отключении клиента А сервер должен сделать откат этих данных (откат или удаление). При нормальном отключении я сам позабочусь об удалении/откате... Все упирается в disconnect...


Digitman   (2004-08-12 08:24:00) [10]


> 3APA3A ©   (12.08.04 00:23) [2]
> какие поддерживает


ReadCommited


как ими управлять?


StartTransaction + Commit[Retaining]/Rollback[Retaining]


> 1) Будет ли клиент Б видеть эти данные?


не будет


> 2) Что произойдет в этими данными, если клиент А "неожиданно"
> отрубится от сервера?


должен произойти автооткат стартованной клиентом А транзакции


jack128   (2004-08-12 01:14:00) [11]

есть один сайтик..русскоязычный..полностью посвященный IB.. Я думаю ты сам дагадаешься какой..вот туда и иди..


3APA3A   (2004-08-12 00:23:00) [12]

А какие поддерживает и как ими управлять?


jack128   (2004-08-12 00:16:00) [13]


> Уровень изоляции - DirtyRead
>  
ib не поддерживает этот уровень изоляции.


Наверх

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