1

PostgreSQL で Npsql を使用しています。あるトランザクションのコミットされていない変更を別のトランザクションで確認したい。

これは、接続とトランザクションを作成する方法です。

// create connection
m_Connection = new NpgsqlConnection(connectionString);
m_Connection.Open();

//create transaction
m_Transaction = m_Connection.BeginTransaction(IsolationLevel.ReadUncommitted);

1 つのスレッドで、次のように行を挿入します。

 NpgsqlCommand command = CreateCommand("INSERT INTO TABLEA  ....", parameters, commandTimeout)
 command.ExecuteNonQuery();

トランザクションをコミットまたはロールバックせずに他の何かを処理します。

別のスレッドで、次のような行を読みました。

 NpgsqlCommand command = CreateCommand("SELECT COUNT(*) FROM TABLEA", parameters, commandTimeout);
 command.ExecuteScalar();

しかし、どういうわけか、最初の INSERT の結果が表示されません。pgAdminにも挿入の結果が表示されません(SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDを実行した後でも)。

私は何を間違っていますか?どんな助けでも大歓迎です。

4

1 に答える 1

8

PostgreSQL は非コミット読み取りをサポートしていません。

コミットされていない他のトランザクションからの変更を確認することはできません。

于 2012-05-09T10:44:46.757 に答える