CREATE COLLATIONは、指定されたオペレーティングシステムのロケール設定を使用するか、既存の照合順序をコピーすることによって、新しい照合順序を定義します。
説明
CREATE COLLATIONは、指定されたオペレーティングシステムのロケール設定を使用するか、既存の照合順序をコピーすることによって、新しい照合順序を定義します。
照合順序を作成するには、ターゲットスキーマに対するcreate権限が必要です。
概要
CREATE COLLATION [存在しない場合] 名 (
[LOCALE=ロケール,]
[LC_COLLATE = lc_collate, ]
[LC_CTYPE = lc_ctype, ]
[PROVIDER = provider, ]
[DETERMINISTIC = boolean, ]
[バージョン=バージョン]
)
CREATE COLLATION [存在しない場合] name FROM existing_collation パラメーター
IF NOT EXISTS: 同じ名前の照合順序がすでに存在する場合は、エラーをスローしないでください。 この場合、通知が発行されます。 既存の照合順序が作成されたようなものであるという保証はありません。
name: 照合順序の名前。 照合順序名はスキーマ修飾できます。 そうでない場合は、現在のスキーマで照合順序が定義されます。 照合順序名は、そのスキーマ内で一意である必要があります。 (システムカタログには、他のエンコーディングに対して同じ名前の照合順序を含めることができますが、データベースのエンコーディングが一致しない場合は無視されます。)
locale: LC_COLLATEとLC_CTYPEを一度に設定するためのショートカットです。 これを指定した場合、これらのパラメーターのいずれも指定できません。
lc_collate: LC_COLLATEロケールカテゴリに指定されたオペレーティングシステムロケールを使用します。
lc_ctype: LC_CTYPEロケールカテゴリに指定されたオペレーティングシステムロケールを使用します。
provider: この照合順序に関連付けられたロケールサービスに使用するプロバイダーを指定します。 可能な値は、icu、libcです。デフォルトはlibcです。 使用可能な選択肢は、オペレーティングシステムとビルドオプションによって異なります。
DETERMINISTIC: 照合順序で決定論的比較を使用するかどうかを指定します。 デフォルト値は「true」です。 決定論的比較では、バイト単位で等しくない文字列は、比較によって論理的に等しいと見なされた場合でも、等しくないと見なされます。 PostgreSQLは、バイト単位の比較を使用して関係を破ります。 決定論的でない比較は、照合を、例えば、大文字と小文字とアクセントとの区別のないものにすることができる。 そのためには、適切なLC_COLLATE設定を選択し、ここで照合順序を決定論的でないように設定する必要があります。
非決定的照合は、ICUプロバイダーでのみサポートされます。
version: 照合順序で格納するバージョン文字列を指定します。 通常、これは省略する必要があります。これにより、オペレーティングシステムによって提供される照合の実際のバージョンからバージョンが計算されます。 このオプションは、既存のインストールからバージョンをコピーするためにpg_upgradeで使用することを目的としています。
照合順序の不一致を処理する方法については、ALTER COLLATIONも参照してください。
existing_collation: コピーする既存の照合順序の名前。 新しい照合順序は既存のものと同じプロパティを持ちますが、独立したオブジェクトになります。
注
CREATE COLLATIONは、pg_collationシステムカタログでSHARE ROW EXCLUSIVEロック (自己競合) を実行するため、一度に実行できるCREATE COLLATIONコマンドは1つだけです。
ユーザー定義の照合順序を削除するには、DROP COLLATIONを使用します。
libc照合順序プロバイダーを使用する場合、ロケールは現在のデータベースエンコーディングに適用できる必要があります。 正確なルールについては、CREATE DATABASEを参照してください。
例
オペレーティングシステムのロケールfr_FR.utf8から照合順序を作成するには (現在のデータベースのエンコーディングがUTF8であると仮定):
COLLATIONフランス語の作成 (ロケール='fr_FR.utf8');ドイツの電話帳ソート順序を使用してICUプロバイダーを使用して照合順序を作成するには:
COLLATION german_phonebook (provider = icu、locale = 'de-u-co-phonebk');既存の照合順序から照合順序を作成するには:
COLLATIONドイツ語を "de_DE" から作成します。これは、アプリケーションでオペレーティングシステムに依存しない照合順序名を使用できるようにするのに便利です。