sql >> データベース >  >> RDS >> Mysql

固定長のMySQL/MariaDB固有のBLOB

    BLOB列にUNIQUEインデックスを作成できます。インデックスの最大長を指定するだけです(つまり、その数の文字までしか一意になりません)。

    ただし、代わりにVARBINARYを使用することを検討してください。これにより、長さを固定でき、一意の制約を誤って破る可能性のある長いフィールドを挿入できなくなります。 https://dev.mysql.com/doc/を参照してください。 refman / 5.6 / en / binary-varbinary.html

    例、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. liquibaseを使用して倍精度[]タイプの列を作成します

    2. QueryDSLを使用したPostgresql配列関数

    3. Djangoフィクスチャが失敗し、DatabaseError:値が長すぎて文字が変化しない(50)

    4. SQLServerの複数の列に外部キー制約を作成する方法-SQLServer/TSQLチュートリアルパート67