Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL / MariaDB eindeutiges BLOB mit fester Länge

Sie können einen UNIQUE-Index für eine BLOB-Spalte erstellen, Sie müssen lediglich eine maximale Länge für den Index angeben (was auch bedeutet, dass er nur bis zu dieser Anzahl von Zeichen eindeutig ist).

Ziehen Sie jedoch in Erwägung, stattdessen VARBINARY zu verwenden, wodurch Sie die Länge festlegen können und Sie kein längeres Feld einfügen können, das versehentlich die Eindeutigkeitsbeschränkung verletzen könnte. Siehe https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Beispiel, getestet am 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)