-
Программа использует ХП. Delphi2009,InterBase2007. 1) Стартует транзакция 2) ХП1 читает и корректирует данные в БД 3) ХП2 считывает уже измененные данные для дальнейших расчетов 4) Commit транзакции
Вопрос1: ХП2 "видит" изменения, внесенные ХП1?
P.S. заметила, что ХП2 почему-то периодически то "видит", то "невидит".
-
если убрать из вопроса лишнее упоминание о двух процедурах, то вопрос упрощается до:
"видит ли транзакция свои собственные изменения".
-
> вопрос упрощается до: > "видит ли транзакция свои собственные изменения". в таком виде, это уже и не вопрос, а типа аксиомы...
-
дык там и вопроса-то по сути нет, так она спрашивает, "видит ли?" и тут же говорит, "что иногда видит, а иногда не видит"
-
В Inerbase нет READ UNCOMMITTED Соответственно, если всё это дело происходит в одной транзакции, то "взлетит". Если в разных - "не взлетит".
-
> Медвежонок Пятачок (07.12.2011 12:48:01) [1]
Тоже не верно, вопрос выглядит иначе "видит ли другая транзакция изменения". Ответ просто - транзакции они разные бывают.
-
> Медвежонок Пятачок (07.12.2011 13:14:03) [3]
Но из этого не исходит, что ХП2 стартует в той же транзиакции, кроме того не изветен уровень изоляции.
-
> Ответ просто - транзакции они разные бывают.
В IB и FB нет Read Uncommitted. В отличие от MSSQL. Нельзя сказать, что это какое-то жуткое неудобство, без которого невозможно жить. Но некое неудобство, особенно после работы с MSSQL, присутствует. Например. Есть некий параметризированный НД, который что-то там возвращает. Сидит в DataModule. Вызывается часто из разных мест программы. Чтобы получить Uncommitted-данные, мне либо транзакцию ему менять надо, либо создавать клон в рамках другой транзакции
-
Тоже не верно, вопрос выглядит иначе
все там верно и истинно. вопрос упрощался для того, чтобы тётя поняла, что у нее не одна транзакция, а больше. Ибо если бы она была одна, то все снова свелось бы к вопросу: видит ли транзакция свои собственные изменения"
-
|