Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL / MariaDB BLOB unico di lunghezza fissa

Puoi creare un indice UNICO su una colonna BLOB, devi semplicemente specificare una lunghezza massima per l'indice (il che significa anche che sarà univoco solo fino a quel numero di caratteri).

Considera, tuttavia, l'utilizzo di VARBINARY che ti consente di correggere la lunghezza e significa che non puoi inserire un campo più lungo che potrebbe rompere accidentalmente il vincolo univoco. Vedi https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Esempio, testato il 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)