ALTER COLLATION <refpurpose>change the definition of a collation</refpurpose> — 照合順序の定義を変更する
ALTER COLLATIONname
REFRESH VERSION ALTER COLLATIONname
RENAME TOnew_name
ALTER COLLATIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER COLLATIONname
SET SCHEMAnew_schema
<command>ALTER COLLATION</command> changes the definition of a
collation.
ALTER COLLATION
は照合順序の定義を変更します。
You must own the collation to use <command>ALTER COLLATION</command>.
To alter the owner, you must be able to <literal>SET ROLE</literal> to the
new owning role, and that role must have <literal>CREATE</literal>
privilege on the collation's schema.
(These restrictions enforce that altering the
owner doesn't do anything you couldn't do by dropping and recreating the
collation. However, a superuser can alter ownership of any collation
anyway.)
ALTER COLLATION
を使用するためには照合順序を所有していなければなりません。
所有者を変更するためには、新しい所有者ロールに対してSET ROLE
ができなければなりません。また、そのロールが照合順序のスキーマにおけるCREATE
権限を持たなければなりません。
(この制限により、照合順序の削除と再作成を行ってもできないことが所有者の変更で行えないようにします。
ただし、スーパーユーザはすべての照合順序の所有者を変更することができます。)
name
The name (optionally schema-qualified) of an existing collation. 既存の照合順序の名前(スキーマ修飾可)です。
new_name
The new name of the collation. 照合順序の新しい名前です。
new_owner
The new owner of the collation. 照合順序の新しい所有者です。
new_schema
The new schema for the collation. 照合順序の新しいスキーマです。
REFRESH VERSION
Update the collation's version. See <xref linkend="sql-altercollation-notes"/> below. 照合順序のバージョンを更新します。 以下の注釈を参照してください。
When a collation object is created, the provider-specific version of the collation is recorded in the system catalog. When the collation is used, the current version is checked against the recorded version, and a warning is issued when there is a mismatch, for example: 照合順序オブジェクトを作成する時に、照合順序の提供者固有のバージョンがシステムカタログに記録されます。 照合順序が使われるとき、現在のバージョンと記録されているバージョンが比較され、不適合の場合は以下の例のように警告が発行されます。
WARNING: collation "xx-x-icu" has version mismatch DETAIL: The collation in the database was created using version 1.2.3.4, but the operating system provides version 2.3.4.5. HINT: Rebuild all objects affected by this collation and run ALTER COLLATION pg_catalog."xx-x-icu" REFRESH VERSION, or build PostgreSQL with the right library version.
A change in collation definitions can lead to corrupt indexes and other
problems because the database system relies on stored objects having a
certain sort order. Generally, this should be avoided, but it can happen
in legitimate circumstances, such as when upgrading the operating system
to a new major version or when
using <command>pg_upgrade</command> to upgrade to server binaries linked
with a newer version of ICU. When this happens, all objects depending on
the collation should be rebuilt, for example,
using <command>REINDEX</command>. When that is done, the collation version
can be refreshed using the command <literal>ALTER COLLATION ... REFRESH
VERSION</literal>. This will update the system catalog to record the
current collation version and will make the warning go away. Note that this
does not actually check whether all affected objects have been rebuilt
correctly.
データベースシステムは、保存されたオブジェクトが一定のソート順になっていることに依存しているため、照合順序を変更するとインデックスが破損するなどといった問題につながります。
一般的にこれは避けるべきですが、オペレーティングシステムを新しいメジャーバージョンにアップグレードしたり、pg_upgrade
を使って新しいバージョンのICUライブラリとリンクされたサーバのバイナリへとアップグレードしたりする場合など、仕方のない場合もあります。
これが発生する場合は、照合順序に依存するすべてのオブジェクトを、例えばREINDEX
を使って再構築します。
これがされれば、照合順序のバージョンをコマンドALTER COLLATION ... REFRESH VERSION
を使って更新できます。
これにより、システムカタログが更新されて照合順序の現在のバージョンが記録され、警告が出なくなります。
これは、影響を受けるすべてのオブジェクトが正しく再構築されたかどうかを実際に確認するわけではないことに注意してください。
When using collations provided by <literal>libc</literal>, version
information is recorded on systems using the GNU C library (most Linux
systems), FreeBSD and Windows. When using collations provided by ICU, the
version information is provided by the ICU library and is available on all
platforms.
libc
が提供する照合順序を使う場合、GNU Cライブラリ(ほとんどのLinuxシステム)、FreeBSD、Windowsを使ってバージョン情報がシステムに記録されます。
ICUが提供する照合順序を使う場合、バージョン情報はICUライブラリにより提供され、すべてのプラットフォームで利用できます。
When using the GNU C library for collations, the C library's version is used as a proxy for the collation version. Many Linux distributions change collation definitions only when upgrading the C library, but this approach is imperfect as maintainers are free to back-port newer collation definitions to older C library releases. 照合順序にGNU Cライブラリを使う場合、Cライブラリのものは照合順序のプロキシとして使われます。 多くのLinuxのディストリビューションではCライブラリをアップデートする時にのみ照合順序の定義を変更しますが、メンテナは新しい照合順序の定義を古いCライブラリのリリースに自由にバックポートできますので、この方法は不完全なものです。
When using Windows for collations, version information is only available
for collations defined with BCP 47 language tags such as
<literal>en-US</literal>.
照合順序にWindowsを使う場合、バージョン情報は、en-US
のようなBCP 47言語タグで定義された照合順序のみが利用可能です。
For the database default collation, there is an analogous command
<literal>ALTER DATABASE ... REFRESH COLLATION VERSION</literal>.
データベースのデフォルト照合順序に対しては、類似のコマンドALTER DATABASE ... REFRESH COLLATION VERSION
があります。
The following query can be used to identify all collations in the current database that need to be refreshed and the objects that depend on them: 以下の問い合わせを使って、現在のデータベース内の更新が必要なすべての照合順序と、それに依存するオブジェクトを特定することができます。
SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation", pg_describe_object(classid, objid, objsubid) AS "Object" FROM pg_depend d JOIN pg_collation c ON refclassid = 'pg_collation'::regclass AND refobjid = c.oid WHERE c.collversion <> pg_collation_actual_version(c.oid) ORDER BY 1, 2;
To rename the collation <literal>de_DE</literal> to
<literal>german</literal>:
照合順序de_DE
の名前をgerman
に変更します。
ALTER COLLATION "de_DE" RENAME TO german;
To change the owner of the collation <literal>en_US</literal> to
<literal>joe</literal>:
照合順序en_US
の所有者をjoe
に変更します。
ALTER COLLATION "en_US" OWNER TO joe;
There is no <command>ALTER COLLATION</command> statement in the SQL
standard.
標準SQLにはALTER COLLATION
文はありません。