Konstantin R. Beliaev wrote:
Ну вот, только я было решил что все понял... :-(
Алексей, продолжите свою мысль. Речь шла о rollback после селективной
процедуры, которая одновременно что-то меняет в базе. Что в этом случае
значит "не атомарна" ?
Эхх. Придётся как про нулл объяснять. Короче, роллбак - это 3.14дец.
Причём всему, что было в транзакции. Вот именно так это слово и следует
трактовать. А вот в случае коммита возможны варианты. Те модификации,
которые были выполнены, актуализируются, а которые не были - не будут.
Не быть они могут по разным причинам - их либо просто никто не делал,
либо при выполнении каких-то операторов в этой транзакции получались
exceptions, сиречь обломы, что есть другой зверёк и уровень атомарности.
А селективно-модифицирующая процедура с суспендом - это, по сути, не
один оператор, а последовательность, а оператором явлеяется фетч. Посему
изменения в тех шагах цикла, которые выполнились, при коммите
актуализируются, а который обломился - нет. И на первый взгляд кажется,
что нарушена атомарность уровня оператора. Или облома. На самом деле
нифига не нарушено, потому что вызов процедуры - это на самом деле не
единичный оператор, а цикл операторов-фетчей. Компрене ву?
--
Regards. Ded.