ホームページ >データベース >mysql チュートリアル >データベーステーブル内のNull許容列に一意の制約を適用するにはどうすればよいですか?
NULL 許容列を含むテーブルに一意の制約を適用する
この記事では、Null 許容列を含むテーブルに一意制約を作成する際の課題について説明します。目的は、Null 許容列が Null であっても、複数の行が同じ値の組み合わせを持たないようにすることです。
質問:
提供されたテーブル スキーマには、null 許容の UserRepository 列があります。ただし、ユーザーは、MenuId 値に関係なく、UserId と RecipeId の各ペアに対して 1 行のみが存在することを確認したいと考えています。
答え:
PostgreSQL 15 以降:
<code class="language-sql">ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE NULLS NOT DISTINCT (UserId, MenuId, RecipeId);</code>
PostgreSQL 14 以前:
<code class="language-sql">CREATE UNIQUE INDEX favo_3col_uni_idx ON Favorites (UserId, MenuId, RecipeId) WHERE MenuId IS NOT NULL; CREATE UNIQUE INDEX favo_2col_uni_idx ON Favorites (UserId, RecipeId) WHERE MenuId IS NULL;</code>
利点:
欠点 (部分インデックスのみ):
代替:
以上がデータベーステーブル内のNull許容列に一意の制約を適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。