1

タイトルでこれを説明する方法がわかりませんでしたが、私が持っているのは次のような表です。

user_id           | subscription_id
6                   12
6                   10
12                  6
4                   12

各ユーザーは他のすべてのユーザーをサブスクライブできますが、あるユーザーが INSERT クエリを使用して別のユーザーを 2 回サブスクライブするのを防ぐことはできますか?

私の subscription_id は一意ではないため、次のようになります。

user_id           | subscription_id
6                   12
6                   12

そして、私はそれを避けたいです。私が知る限り、INSERT IGNORE、INSERT UPDATE、および ON DUPLICATE は一意のキーでのみ機能します。

4

2 に答える 2

0

user_id AND subscription_id の複合主キーを持つようにデータベース テーブルを設定する必要があります。

そうすれば、各行は両方の列で一意でなければなりません。

参照:複合主キーを適切に作成する方法 - MYSQL

于 2012-12-06T14:40:51.100 に答える
0

タプルが単一のテーブル内で複数回発生しないようにするための唯一の信頼できる簡単な方法は、次のいずれかです。

  1. スパニング ユニーク キーを使用する

  2. スパン主キーを使用する

  3. 多分トリガー

最初の 2 つはほぼ同じですが、一意のキーも null 値を異なるものとして扱うため、うまくいかない場合があります。

ALTER TABLE user_subscriptions ADD PRIMARY(user_id, subscription_id);
于 2012-12-06T14:41:24.720 に答える