是否有一种“半便携式”方式来获取整行的 md5() 或 sha1()?(或者更好的是,按所有字段排序的一整组行,即order by 1,2,3,...,n
)?不幸的是,并不是所有的数据库都是 PostgreSQL……我至少要处理微软 SQL 服务器、Sybase 和 Oracle。
理想情况下,我希望有一个聚合器(服务器端)并使用它来检测行组中的更改。例如,在有一些时间戳列的表中,我想为每个月存储一个唯一的签名。然后我可以快速检测到自上次访问以来发生变化的月份(我将某些表镜像到运行 Greenplum 的服务器)并重新加载这些表。
我查看了一些选项,例如checksum(*)
在 tsql 中(恐怖:它很容易发生冲突,因为它基于一堆 XOR 和 32 位值),hashbytes('MD5', field)
但是后者不能应用于整行. 这将为我提供一个解决方案,只针对我必须处理的一种 SQL 风格。
任何想法?即使只是上面提到的一种 SQL 习惯用法,那也很棒。