Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL / MariaDB BLOB exclusivo de comprimento fixo


Você pode criar um índice UNIQUE em uma coluna BLOB, basta especificar um comprimento máximo para o índice (o que também significa que ele só será exclusivo até esse número de caracteres).

Considere, no entanto, usar VARBINARY, que permite corrigir o comprimento e significa que você não pode inserir um campo mais longo que pode quebrar acidentalmente a restrição exclusiva. Consulte https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Exemplo, testado em 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)