【发布时间】:2015-11-02 16:19:57
【问题描述】:
我正在尝试使用 SHA256 对某些表的列进行哈希处理并存储哈希值。我正在考虑使用HASHBYTES 来实现这一点,但该函数只能将一个字符串参数作为哈希输入-HASHBYTES('SHA2_256', COLUMN_1)。是否可以散列多个列(包括不是字符串的列)?
我想要这样做的原因是,我可以使用哈希值识别已更改或添加的行,以便稍后在 ETL 过程中使用。我要散列的表之一包含以下列:
[CompanyCode] [varchar](4) NULL,
[CompanyNumber] [int] NULL,
[CompanyDescription] [varchar](20) NULL,
[CompanyAddress] [varchar](60) NULL,
[EffectiveDate] [date] NULL
请注意,由于该表是由第三方管理的,因此我无法使用触发器添加时间戳。
【问题讨论】:
-
为什么不用时间戳。 (触发器!!!)
-
对不起,我应该澄清一下表格是由第三方应用程序控制的,我不能修改它。我刚刚复制了一份我正在处理的内容。
-
不能修改是什么意思?您是说要添加一个新列还是要创建一个新表来保存 hashbytes 值?
-
除非安全是一个大问题,否则你不能只使用
checksum(*)的版本吗? -
您可以将列连接在一起或使用
checksum()。
标签: sql sql-server hash