2016-08-20 7 views

答えて

1

フィールドの値にハッシュ関数を使用して、同じテーブルの別の一意のフィールドに格納します。

だからあなたのテーブルには、このようなものになるだろう:そのテーブルに挿入する場合、あなたはtext_contentフィールドのSHA256ハッシュを計算し、text_hashフィールドに格納します

create table my_table (
    id integer not null primary key, 
    text_content varchar(65535) not null, 
    text_hash varchar(128) not null unique 
); 

。そうすれば、text_contentの値があなたのテーブルで一意であることを確かめることができます。

DB SIDEプログラミングが好きなら、が提供するトリガーにこのロジックを設定できます。

+0

どのようにして衝突を処理できますか? – Nick

+0

衝突は**非常にまれです。あなたがそれらを見つけるとは思わないでください。それは、そのような種類のアルゴリズムが設計されたものです。この質問をチェックアウト:http://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-possibility-of-sha-collisions-in-practice –

+0

これは100%防弾で解決されている可能性がありますハッシュコリジョンの場合のバイナリ比較+衝突の場合のキーの一意性のための自動インクリメントされたセカンダリフィールド。このようなタスクを実行するデータベースソリューションはありませんか? – Nick

関連する問題