2016-08-20 4 views

Répondre

1

Je voudrais utiliser une fonction de hachage sur la valeur du champ et le stocker dans un champ unique distinct sur la même table.

donc votre table serait quelque chose comme ceci:

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

Lors de l'insertion sur cette table, vous calculer SHA256 hachage pour le champ text_content et le stocker dans text_hash champ. De cette façon, vous pouvez être sûr que les valeurs text_content sont uniques sur votre table.

Si vous aimez la programmation DB SIDE, vous pouvez mettre cette logique sur un déclencheur fourni MySQL les prend en charge.

+0

comment gérer les collisions? – Nick

+0

Les collisions seraient ** extrêmement ** rares. Ne pensez pas que vous les trouverez. C'est pour cela que ces algorithmes ont été conçus. Vérifiez cette question: http://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-possibility-of-sha-collisions-in-practice –

+0

Cela aurait pu être résolu 100% à l'épreuve des balles avec une comparaison binaire dans le cas d'une collision de hachage + un champ secondaire auto-incrémenté pour l'unicité de la clé en cas de collision. N'y a-t-il aucune solution de base de données qui exécuterait une telle tâche? – Nick