Możesz utworzyć indeks UNIQUE dla kolumny BLOB, wystarczy określić maksymalną długość indeksu (co również oznacza, że będzie on unikalny tylko do tylu znaków).
Rozważ jednak użycie zamiast tego VARBINARY, które pozwala ustalić długość i oznacza, że nie można wstawić dłuższego pola, które może przypadkowo złamać ograniczenie unikatowości. Zobacz https://dev.mysql.com/doc/ refman/5.6/pl/binary-varbinary.html
Przykład, testowany 5.6.23:
mysql [localhost] {msandbox} (test) > create table t1 (a BLOB(16), UNIQUE INDEX `a`(`a`(16)));
Query OK, 0 rows affected (0.01 sec)
mysql [localhost] {msandbox} (test) > insert into t1 values('aaa');
Query OK, 1 row affected (0.01 sec)
mysql [localhost] {msandbox} (test) > insert into t1 values('aaa');
ERROR 1062 (23000): Duplicate entry 'aaa' for key 'a'
mysql [localhost] {msandbox} (test) >
mysql [localhost] {msandbox} (test) > create table t2(a VARBINARY(16), UNIQUE INDEX `a`(`a`));
Query OK, 0 rows affected (0.02 sec)