У меня есть приведенный ниже блок кода с оператором INSERT
и UPDATE
внутри блока BEGIN TRAN
и END TRAN
.
Теперь мы все знаем, что эта операция атомарна. Но я вижу другое. вставка завершается неудачно из-за нарушения уникального ограничения, но все же происходит ОБНОВЛЕНИЕ. Когда я выполняю ту же часть непосредственно на SQL-сервере, я вижу, что операция совершенно атомарна. Есть ли что-нибудь на фронте PERL DBI, что переопределяет BEGIN TRAN
и COMMIT TRAN
. Любые указатели?
$dbh->{RaiseError} = 1; $dbh->{PrintError} = 1; my $sql = "BEGIN TRAN INSERT INTO $table ... UPDATE $table .... COMMIT TRAN"; $dbh->do($sql);