如何统计PostgreSQL中BEGIN TRANSACTION语句的数量


using (DbConnection dbConn = myContext.Database.GetDbConnection()) {
using (DbCommand dbCommand = dbConn.CreateCommand()) {
dbCommand.CommandText = "SELECT @@TRANCOUNT";
dbCommand.Transaction = transaction.GetDbTransaction();
return (int)dbCommand.ExecuteScalar();
}
}

上面的代码与Microsoft SQL Server一起用于获取BEGIN TRANSACTION语句的数量。

PostgreSQL的等效命令是什么?PostgreSQL支持这样的方法吗?

谢谢。

SQL Server和PG的工作方式非常不同。MS SQL Server支持嵌套事务,因此BEGIN TRAN的计数对于了解嵌套级别非常重要,而PostGreSQL不支持嵌套事务。因此,在PostGreSQL中绝对没有@@TRANCOUNT的等价物。

无论您将在PostGreSQL中执行多少BEGIN TRANSACTION,当COMMIT或ROLLBACK首次启动事务的终结时,事务都会无限结束,在使用嵌套事务的非对称模型的SQL Server中,情况并非如此(第一个ROLLBACK通过取消来结束事务,而最后一个COMMIT(相当于BEGIN TRAN的数量(结束事务并最终接受所有数据库修改(。

PostGreSQL和SQL Server之间的许多其他功能完全不同,我正在写一系列关于这些差异的论文。第一个是关于DBA查询的性能,第二个是关于COUT性能,第三个是功能差异的完整全景将在几天或几周内到达。。。

相关内容

最新更新