sql >> Base de Datos >  >> RDS >> Mysql

MySQL / MariaDB BLOB único de longitud fija

Puede crear un índice ÚNICO en una columna BLOB, simplemente necesita especificar una longitud máxima para el índice (lo que también significa que solo será único hasta esa cantidad de caracteres).

Considere, sin embargo, usar VARBINARY en su lugar, lo que le permite corregir la longitud y significa que no puede insertar un campo más largo que pueda romper accidentalmente la restricción única. Ver https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Ejemplo, probado el 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)