PowerShell в оператор MySQL: SQL после фиксации COMMIT - PullRequest
0 голосов
/ 10 июля 2020

Я вставляю значения из PowerShell в MySQL таблицу. У меня есть 2 Insert операторов (insertQuery1, insertQuery2) в транзакции.

Есть COMMIT после insertQuery1, поэтому изменения в query_1 фиксируются, но нет COMMIT после insertQuery2, но изменения в query_2 также фиксируются. Может ли кто-нибудь сообщить мне, почему изменения в query_2 также фиксируются, даже если после него нет инструкции COMMIT.

Если я не использую COMMIT, оба запроса не фиксируются.

$oConnection = New-Object MySql.Data.MySqlClient.MySqlConnection($sConnectionString)
try
{

        
        $oConnection.Open()
        $oMYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand

        
        $oMYSQLTransaction = $oConnection.BeginTransaction();
        $oMYSQLCommand.Connection=$oConnection
        $oMYSQLCommand.Transaction = $oMYSQLTransaction;
        
        $insertQuery1 ='INSERT into `temp_schema`.`temp_table` (`temp_col`) VALUES('+'"'+$temp_val1+'"' +')'

        $oMYSQLCommand.CommandText=$insertQuery1 
        $iRowsAffected=$oMYSQLCommand.ExecuteNonQuery()
        
        $oMYSQLTransaction.Commit();

        Start-Sleep -Seconds 10      

        $insertQuery2 ='INSERT into `temp_schema`.`temp_table` (`temp_col`) VALUES('+'"'+$temp_val2+'"' +')'

        $oMYSQLCommand.CommandText=$insertQuery2
        $iRowsAffected=$oMYSQLCommand.ExecuteNonQuery()

}
catch{
    write-warning ("Error: "+$Error[0].ToString())
}
finally{
    $oMySqlCommand.Connection.Close()

}

1 Ответ

0 голосов
/ 10 июля 2020

Хорошо, я понял, что Transaction завершается после COMMIT и, поскольку insertQuery2 не является частью какой-либо транзакции, он выполняется автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...