ホームページ >データベース >mysql チュートリアル >MySQL はどのようにして複数のフィールドが一意であることを確認しますか?

MySQL はどのようにして複数のフィールドが一意であることを確認しますか?

(*-*)浩
(*-*)浩オリジナル
2019-05-07 10:07:075161ブラウズ

MySQL はどのようにして複数のフィールドが一意であることを確認しますか?

推奨コース: MySQL チュートリアル

mysql の一部のテーブルでは、一部のフィールドに一意の制約を作成する必要がある場合があります。重複を防ぐ方法はありますか? 一部のフィールドに一意の制約をより柔軟に実装するためにコードを追加したくない場合、mysql には 2 つのメソッドが用意されています:

1.unique key

テーブル xx

一意のキー no_account(no,collection_account) を追加

2.一意のインデックス

alter table xxadd unique no_account_index(no,collection_account);

ユーザーがコメントに「いいね!」するという要件があるとします。データベース設計は、ユーザー テーブル t_user、コメント テーブル t_comment (テーブル t_praise など) の 3 つのテーブルです。テーブルには user_id と comment_id という 2 つの外部キーがあり、それぞれユーザー テーブルのユーザー ID とコメント テーブルのコメント ID に関連付けられており、ユーザーは同じコメントにのみいいねをすることができると規定されていますこれを実現する 1 つの方法は、「いいね!」を挿入することです。テーブルに入る前に、まず user_id と comment_id を通じて似たレコードがあるかどうかをクエリします。存在しない場合は、挿入操作を実行します。そうでない場合は、すでに「いいね!」を付けたレコードが返されます。この方法で実装すると、データベース クエリ操作が 1 つ増えます。より良い実装は、同様のテーブルの user_id と comment_id を変更することです。つまり、これら 2 つの列を同時に同じにすることはできません。 , 挿入操作が実行されると、「いいね!」が既に登録されている場合、データベースは一意キー制約の違反をスローします。このようにして、複数のデータベース クエリ操作が実行されたことを回避できます。一意のキーを設定するための特定のステートメント複数の列に対する制約は次のとおりです:

CREATE TABLE `t_praise` (
  `id` int(12) unsigned NOT NULL AUTO_INCREMENT,
  `comment_id` int(12) NOT NULL,
  `user_id` int(12) NOT NULL,
  KEY `FK_t_praise_comment` (`comment_id`),
  KEY `FK_t_praise_user` (`user_id`),
  UNIQUE KEY `UK_praise` (`comment_id`,`user_id`)

)

以上がMySQL はどのようにして複数のフィールドが一意であることを確認しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。