|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Michael Samanov 2:550/5068.1515 27 Aug 2000 15:37:36 To : Juriy Goloveshkin Subject : Re: DBI+здоровые таблицы -------------------------------------------------------------------------------- Hello, Juriy! At Sun, 27 Aug 00 12:50:38 +0400 Juriy Goloveshkin wrote: MS>> Транзакцию надо обязательно закрывать JG> огда будь последовательным: транзакцию надо и открывать ;) Hу, открывается-то она автоматически :-) JG> If AutoCommit is switched-off, immediately a transaction will be started by JG> issuing a 'begin' statement. Any 'commit' or 'rollback' will start a new JG> transaction. A disconnect will issue a 'rollback' statement. Hу правильно, транзакции надо закрывать, и закрытие инициирует новую транзакцию. Поэтому я и облегчаю себе жизнь тем, что в основном-то используются однострочные select-ы и update-ы, так вот я открытие/закрытие транзакций возлагаю на драйвер, а вручную работаю, когда надо выполнить группу операций. Типичный пример: вставляем в таблицу заказ, а в связанную таблицу - товары из заказа, одновременно эти товары списываются со склада. Тут-то и приходит на помощь local $dbh->{AutoCommit} = 0. А если мне надо узнать фамилию товарища по логину, так это делается одной строчкой, нехай драйвер сам с транзакциями разбирается. Хотя, конечно, открытие/закрытие транзакций кушает время и ресурсы, так что в идеале неплохо бы делать весь GET/POST внутри одной транзакции. Кстати, select-ы тоже лучше commit-ить, а не rollback-ить в системах с мультиверсионными транзакциями (в отличие от журнальных), к которым как раз и относится postgres. При коммите селекта ты просто подтверждаешь версию, а при откате, возможно, движок вздумает откатить версии, зависимые от откатываемой. Или что-то в этом духе. Я, помнится, читал это насчет интербейса. В рассуждениях могу наврать, но конечный результат хорошо помню. Хотя, по большому счету, коммитить надо все успешные операции. Sincerely yours, Michael (mailto:mike@vlink.ru). --- ifmail v.2.14 * Origin: Home (2:550/5068.1515@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/79493cf8fa79.html, оценка из 5, голосов 10
|