首页 > 解决方案 > 是否有 CHANGE_TRACKING_CURRENT_VERSION (T-SQL) 的 PostgreSQL 类似物?

问题描述

我正在尝试在 PostgreSQL 过程中转换一些 SQL Server 存储过程,但我没有找到CHANGE_TRACKING_CURRENT_VERSION(T-SQL)的 PostgreSQL 类似物。是否可以检索与最后提交的事务关联的值?我将使用这个值作为同步参数。我会将这个同步参数和表名传递给该过程,并将它与当前的更改跟踪值进行比较。如果它们不同,则表示该表已被修改,我可以对修改后的行执行某些操作。

标签: sql-serverpostgresqlstored-procedures

解决方案


经过我的调查,我会说我们可以尝试使用pg_last_committed_xact. 它返回xidtimestamp。我们不需要timestamp,但我们可以将其用作(T-SQL)xid的类似物。CHANGE_TRACKING_CURRENT_VERSION这两个函数都在 DML 操作后返回一个新值。

https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-COMMIT-TIMESTAMP

在此处输入图像描述

更新: 我错了。我们不能pg_last_committed_xact用作CHANGE_TRACKING_CURRENT_VERSION.

pg_last_committed_xact值将在每次成功事务后递增,而CHANGE_TRACKING_CURRENT_VERSION仅当将 DML 操作应用于启用更改跟踪的表时,该值才会更改。


推荐阅读