データベーステーブル内のNull許容列に一意の制約を適用するにはどうすればよいですか?
NULL 許容列を含むテーブルに一意の制約を適用する
この記事では、Null 許容列を含むテーブルに一意制約を作成する際の課題について説明します。目的は、Null 許容列が Null であっても、複数の行が同じ値の組み合わせを持たないようにすることです。
質問:
提供されたテーブル スキーマには、null 許容の UserRepository 列があります。ただし、ユーザーは、MenuId 値に関係なく、UserId と RecipeId の各ペアに対して 1 行のみが存在することを確認したいと考えています。
答え:
PostgreSQL 15 以降:
- UNIQUE 制約定義で NULLS NOT DISTINCT 句を使用します。
ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE NULLS NOT DISTINCT (UserId, MenuId, RecipeId);
PostgreSQL 14 以前:
- 2 つの部分インデックスを作成します:
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;
利点:
- 必要な制約を効率的に適用します。
欠点 (部分インデックスのみ):
- 外部キー参照とクラスタリング オプションを制限します。
- 一部のクエリでは、一致する WHERE 条件がない場合は機能しません。
代替:
- 複数の NULL 許容列が関係する場合は、この記事の説明「UNIQUE 制約が起動しないのはなぜですか?」を参照してください。
以上がデータベーステーブル内のNull許容列に一意の制約を適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
