小编典典

MySQL行校验和

sql

是否可以选择表中的整行并获得某种校验和?我正在寻找一种方法,告诉我的代码仅在更改了至少一条记录后才更新数据。从数据更改跟踪的角度来看,这将有助于我减少历史记录表中记录的许多更改。-
谢谢。


阅读 176

收藏
2021-04-22

共1个答案

小编典典

您可以结合使用MD5()CONCAT()函数来为该行生成MD5校验和:

SELECT MD5(CONCAT(col1, col2, col3, ...)) as MD5_checksum FROM table;

如果其中一列是可为空的,请确保将其包装在中IFNULL(col, ''),因为null会使结果CONCAT()也为null。

另请注意,这不是100%安全的。如果从一列中删除1个字符并将其添加为下一列的第一个字符CONCAT(),则MD5哈希的结果将相同。

2021-04-22