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

MySQL / MariaDB unik BLOB af fast længde

Du kan oprette et UNIKT indeks på en BLOB-kolonne, du skal blot angive en maksimal længde for indekset (hvilket også betyder, at det kun vil være unikt op til så mange tegn).

Overvej dog at bruge VARBINARY i stedet, som giver dig mulighed for at fastsætte længden og betyder, at du ikke kan indsætte et længere felt, der ved et uheld kan bryde den unikke begrænsning. Se https://dev.mysql.com/doc/ refman/5.6/da/binary-varbinary.html

Eksempel, testet 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. ODP.NET-forbindelsesanmodningen fik timeout

  2. Sådan udtrækkes en understreng fra en streng i PostgreSQL/MySQL

  3. Rails 3.2.6 og oprettelse af databasevisninger gennem migreringer

  4. PostgreSQL - Foreign Key References Gensidigt eksklusive tabeller