sql >> Databasteknik >  >> RDS >> Mysql

MySQL / MariaDB unik BLOB av fast längd

Du kan skapa ett UNIKT index på en BLOB-kolumn, du behöver helt enkelt ange en maximal längd för indexet (vilket också betyder att det bara kommer att vara unikt upp till så många tecken).

Överväg dock att använda VARBINARY istället som låter dig fixa längden och innebär att du inte kan infoga ett längre fält som av misstag kan bryta den unika begränsningen. Se https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html

Exempel, testad 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)


  1. Varför är dubbla kapslade NOT EXISTS-satser oundvikliga i SQL

  2. Django:Obuffrad mysql-fråga

  3. Hur kan jag begränsa storleken på tillfälliga tabeller?

  4. lägg till födelsedagshändelser i jQuerys fullständiga kalender varje år