MySQLに2つの一意のキーを持ち、それらを何らかの方法で接続する方法はありますか?
たとえば、次のテーブルがあり、「title」と「store」が一意のキーである場合
id | category | title | price | store
1 | outdoors | fishing rod | 59.99 | wal-mart
2 | auto | Penzoil Oil | 9.99 | target
そして私は次のレコードを挿入しようとします。タイトルが「釣り竿」であり、ストアが「ウォルマート」であり、そのタイトルとストアを持つ既存のレコードがあるため、この新しいレコードは無視されます。
| outdoors | fishing rod | 30.99 | wal-mart
しかし、次のレコードを挿入しようとすると、「釣り竿」というタイトルと「ターゲット」のストアが存在するレコードがないため、受け入れられます。
| outdoors | fishing rod | 30.99 | target
これはMySQLだけで可能ですか?
複数の列にインデックスを定義できます。例:
CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);
はい。 2つの個別の一意性制約の代わりに、両方の列に単一の一意性制約を作成する必要があります。
CREATE INDEX
構文は次のとおりです。
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[algorithm_option | lock_option] ...
あなたの例では、次のようになります。
CREATE UNIQUE INDEX index_name ON tbl_name (title,store);
また、作成した2つの誤った一意のインデックスを削除する必要があります。
インデックスの作成方法の詳細については、 ドキュメント を参照してください。
複数列の一意キー が必要です。
他の机 table_name
ADD UNIQUE INDEX(title
、store
);