【发布时间】:2018-09-05 12:39:34
【问题描述】:
我可以使用下面的代码将表中的 rowversion 列转换为 varchar
select CONVERT(VARCHAR, CONVERT(BINARY(8), roversion_col), 1) rwa from TBL
如何将其转换回 rowversion 数据类型? 不可以吗?
更新:
这不应被视为重复
How to convert TIMESTAMP values to VARCHAR in T-SQL as SSMS does?
这个问题是关于询问 varchar 的 rowversion 数据类型。 但是,这个问题反之亦然,并且想使用 varchar 获取 rowversion 数据。
【问题讨论】:
-
你为什么要转换它? rowversion 是没有特定意义的二进制值,除了保证它总是仅针对该特定行增加。它不是数据库版本号,也不能保证具有唯一值。较新的行不保证获得比现有行更大的值
-
此外,
rowversion字段无法写入,因此rowversion值不能存储在数据库中的任何位置,除非是binary(8) -
是的,我明白了。在转换到 PostgreSQL 期间,Talend 已将 rowversion 转换为字符变化数据类型。我有最新行版本的记录,想知道最新的变化,但由于它被记录为字符变化,我无法识别最近的变化
-
为什么不呢?如果以任何方式修改了行,则 rowversion 值也会更改。当您尝试重新加载数据时,rowversion 将与您存储的任何内容不同。您是否假设
rowversion可能是一个数据库版本,并尝试查找行版本比存储的最大版本的内容?你不能像这样使用rowversion -
顺便说一句,如果您想查找新条目,SQL Server 自 2005 年以来在所有版本和版本中都提供change tracking。这确实使用数据库版本号。您可以要求对任何启用了更改跟踪的表进行所有更改,包括删除。无需加载所有内容并尝试通过比较行来查找更改,您只需询问自上次提取的数据库版本以来的任何更改记录
标签: sql-server