Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL / MariaDB BLOB unique de longueur fixe

Vous pouvez créer un index UNIQUE sur une colonne BLOB, il vous suffit de spécifier une longueur maximale pour l'index (ce qui signifie également qu'il ne sera unique que jusqu'à ce nombre de caractères).

Envisagez cependant d'utiliser VARBINARY à la place, ce qui vous permet de fixer la longueur et signifie que vous ne pouvez pas insérer un champ plus long qui pourrait accidentellement rompre la contrainte d'unicité. Voir https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Exemple, testé le 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)