|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Напомните пожалуйста (давно с Informix не работал). Если я открываю транзакцию. Начинаю update-ить необходимые мне таблицы с анализом результатов выполнения по каждой таблице и спотыкаюсь на одной из таблиц, то возникает вопрос по таблице на которой произошла ошибка. Если я закрою транзакцию, то update записей в таблице, на которой произошла ошибка откатятся или все таки часть записей в этой таблице останутся проапдейчеными? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 11:58 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Alevtin Если я закрою транзакцию Зависит от того , как "закроете" транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 12:11 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
IkirAlevtin Если я закрою транзакцию Зависит от того , как "закроете" транзакцию. Речь идет о том, что я хочу именно "закрыть" (commit work) транзакцию, а не откатить ее целиком. Что будет, если сделать rollback мне и так понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 12:34 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
AlevtinIkirAlevtin Если я закрою транзакцию Зависит от того , как "закроете" транзакцию. Речь идет о том, что я хочу именно "закрыть" (commit work) транзакцию, а не откатить ее целиком. Что будет, если сделать rollback мне и так понятно. В таком случае (commit work) будут зафиксированы все измененные на данный момент строки во всех таблицах, за исключением тех, которые не были модифицированы из-за ошибки или не успели измениться к моменту фиксации. А как могло быть по другому ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 13:23 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
vasilis, извините, но расскажите еще раз неразумному....... Что будет с таблицами, которые изменялись в пределах данной транзакции до момента возникновения ошибки, я знаю. Меня интересует таблица, на которой произошла ошибка. Если я делаю update таблицы через курсор и к моменту возникновения ошибки успел в этой таблице проапдейтить 754 (например) записи, то после того как возникла ошибка и я закрыл транзакцию принудительно, что будет с этими 754 записями. Они откатятся или будут зафиксированы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 13:36 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Alevtin, будут зафиксированы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 14:00 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Alevtin, будут зафиксированы, поскольку "через курсор" - это несколько команд (хоть и одинаковых). Если был бы один "атомарный" "UPDATE tbl SET fld=vl" - то эти данные остались бы неизменёнными. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 15:28 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Если требуется откатить только часть транзакции можно использовать sql-оператор ROLLBACK TO SAVEPOINT ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 16:25 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
АнатоЛой... Если был бы один "атомарный" "UPDATE tbl SET fld=vl" - то эти данные остались бы неизменёнными. Говоря более простым английским :) и чтобы подчеркнуть важность вышесказанного и уточнить момент транзакционности БД: The logging status of a database determines what happens after an error has occurred when an SQL statement that affects more than one row in a table is executed. - Logged databases. If an error occurs, no further rows are processed. Any changes that have already been made to the table are rolled back. All of this activity is recorded in the log file. - Unlogged databases. If an error occurs, no further rows are processed. Any changes that have already been made to the table, however, remain in place. АнатоЛой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Мне кажется, что более показательным был бы следующий update UPDATE loy1 SET id = id+1; UPDATE loy2 SET id = id+1; и вариант даже без явного указания транзакции (т.е. использование singleton transaction) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 16:38 |
|
|
start [/forum/topic.php?fid=44&fpage=24&tid=1607628]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 461ms |
0 / 0 |