【发布时间】:2011-03-07 09:19:25
【问题描述】:
我需要对表中的某些数据生成单个哈希
CREATE TABLE Table1
(
F1 INT UNSIGNED NOT NULL AUTO_INCREMENT,
F2 INT default NULL,
F3 Varchar(50) default NULL,
..
FN INT default NULL,
PRIMARY KEY (F1)
);
即F1, F3,FN 其中 F2=10
SELECT md5(CONCAT_WS('#',F1,F3,FN)) FROM Tabe1 WHERE F2=10
为表中的每一行提供一个哈希。
问题
1) 如何获得整个表的单个哈希?
2) 使用 MD5、SHA1、SHA 或任何其他算法的快速散列算法是什么?
编辑:
已使用 Mysql 4.1 - 它确实不支持触发器
【问题讨论】:
-
为什么需要这些哈希值?可能有比散列所有数据更好的方法来实现您的需求。
-
@Ben - 哈希用于检测表中的数据变化
-
他们为什么不使用触发器? dev.mysql.com/doc/refman/5.0/en/triggers.html
-
Charles 是正确的,在非常宽的表上计算 rowhash 可以大大加快检测更改的过程。我来这里是为了弄清楚如何在 MySQL 中实现这一点。我通常在 SQL Server 中完成此操作。