2010-11-03 3 views
1

Я программирую в perl и имею существующее соединение (прогамматически) с моей базой данных postgres. После того, как соединение установлено, я не контролирую код подключения, я хочу отключить автосохранение.postgresql подключение и настройка autocommit off

Как это сделать? Когда я делаю это в интерактивном режиме, я не вижу никаких изменений. I \ set autocommit off, а затем сделайте вставку, и я вижу изменение. Я делаю откат, я понимаю, что транзакции не существует.

Я хочу установить автокоммутацию, выполнить свою работу и затем совершить. Как это сделать с существующим соединением?

Благодаря Реза

+1

какой-либо причине вы не можете использовать обычную сделку? –

ответ

5

Не следует отключить AutoCommit в середине связи, так как она является неожиданной и ошибками.

Лучше явно начал и окончание операции с использованием что-то вроде этого:

$dbh->begin_work(); 
foreach($statement1, $statement2, $statement3) { 
    $dbh->execute($_) 
    or do { $dbh.rollback(); return -1 } 
} 
$dbh->commit(); 

begin_work() будет временно отключить автоматическую фиксацию выключен, до следующей фиксации или отката.

Но если вы думаете, что вам действительно нужно, чтобы навредить себе, то Perl не остановит вас:

$dbh->{AutoCommit} = 0; 
+0

именно то, что мне было нужно, большое вам спасибо. – reza

Смежные вопросы