Konstantin R. Beliaev wrote:

Ну вот, только я было решил что все понял... :-(
Алексей, продолжите свою мысль. Речь шла о rollback после селективной процедуры, которая одновременно что-то меняет в базе. Что в этом случае значит "не атомарна" ?

Эхх. Придётся как про нулл объяснять. Короче, роллбак - это 3.14дец. Причём всему, что было в транзакции. Вот именно так это слово и следует трактовать. А вот в случае коммита возможны варианты. Те модификации, которые были выполнены, актуализируются, а которые не были - не будут. Не быть они могут по разным причинам - их либо просто никто не делал, либо при выполнении каких-то операторов в этой транзакции получались exceptions, сиречь обломы, что есть другой зверёк и уровень атомарности. А селективно-модифицирующая процедура с суспендом - это, по сути, не один оператор, а последовательность, а оператором явлеяется фетч. Посему изменения в тех шагах цикла, которые выполнились, при коммите актуализируются, а который обломился - нет. И на первый взгляд кажется, что нарушена атомарность уровня оператора. Или облома. На самом деле нифига не нарушено, потому что вызов процедуры - это на самом деле не единичный оператор, а цикл операторов-фетчей. Компрене ву?

--
Regards. Ded.

Ответить