1

我将 Npsql 与 PostgreSQL 一起使用。我想在另一个事务中查看一个事务的未提交更改。

这就是我创建连接和事务的方式:

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

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

在一个线程中,我像这样插入一行:

 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 回答