2

レコードを比較するための単一の値としてハッシュまたはチェックサムを含む列が必要です。純粋なSQLでこのようなことを行うことは可能ですか?これは、PHPのプログラムによるソリューションと比べて実用的だと思いますか?

4

1 に答える 1

1

はい、これは可能です。 MD5()、、、SHA1()およびSHA2()はすべて実行可能なハッシュ関数です。

これらの関数の値を行ごとに計算し、クエリごとに計算する必要があります。たとえば、行を挿入するたびに、次のようにハッシュ値を挿入する必要があります。

INSERT INTO x
       name=?name,
       address=?address,
       hash=MD5(CONCAT(?name,?address))

更新のたびに同様のことを行う必要があります。間違えると、特にテーブル構造が変更された場合に非常に簡単になりますが、ハッシュは役に立たないよりも悪くなります。

ちなみに、MD5はもはや認証のために暗号的に安全ではありません。ただし、クローズドシステムでのこの種のハッシュには依然として許容できる選択です。

于 2012-09-15T13:07:07.420 に答える