SET DEFAULTCOLLATE
SET DEFAULTCOLLATE ステートメントは、CHAR、VARCHAR または LONGVARCHAR データ型の列すべてに使用するコレーティング シーケンス ファイルを指定できます。
構文
SET DEFAULTCOLLATE = <NULL | 'acsパス'>
acsパス ::= コレーティング シーケンス規則が明記されているファイルの場所
備考
SET DEFAULTCOLLATE ステートメントは、多数の列のコレーティング シーケンスを個別で設定するより、もっと便利なセッションの設定方法を提供します。
選択すれば、個々の列でコレーティング シーケンスを指定することもできます。列定義の一部として COLLATE キーワードを使用すると、その特定の列の SET DEFAULTCOLLATE 設定は無効になります。
ALTER TABLE および
CREATE TABLE の列定義を参照してください。
SET DEFAULTCOLLATE の "NULL" パラメーターによって、セッションはオルタネート コレーティング シーケンス(ACS)ファイルを使用しなくなります。個別に COLLATE が定義されている列を除き、どのテキスト列にもコレーティング シーケンスは適用されません。ACS ファイルは、トランザクショナル インターフェイスの ACS で使用される形式と同じ 265 バイト イメージです。『
Pervasive PSQL Programmer's Guide』の
ユーザー定義 ACS を参照してください。
DEFAULTCOLLATE のデフォルトのセッション設定はヌルです。
以下の要件が acs パス パラメーターに適用されます。
•パラメーターには、呼び出し元アプリケーションの場所からではなく、データベース エンジンの場所と比較した場合に有効なパスを指定する必要があります(つまり、呼び出し元アプリケーションの分析視点ではなく、データベース エンジンの視点から、ということです)。
•パスのディレクトリ構造は存在している必要があります(SET DEFAULTCOLLATE でパスの作成は行いません)。
•パスにファイル名を含める必要があります。ファイルによってコレーティング規則を特定します(たとえば、upper.alt など。このファイルは Pervasive PSQL で提供されます)。
•パスは一重引用符で囲む必要があります。
•パスは最低でも 1 文字はなければならず、255 文字を超えてはいけません。
•DDF が存在するディレクトリに対して相対的である、相対パスを使用できます。相対パスには、1 つのピリオド(現在のディレクトリ)、2 つのピリオド(親ディレクトリ)、円記号、あるいはこれら 3 つのあらゆる組み合わせを含めることができます。相対パスの円記号は、スラッシュ(/)と円記号(\)のどちらでも使用できます。必要であれば、2 種類の記号を混在させて使用することもできます。
•UNC(Universal Naming Convention)のパス名を使用できます。
例
Pervasive PSQL ファイルのデフォルトの保存場所については、『
Getting Started with Pervasive PSQL』の
Pervasive PSQL ファイルはどこにインストールされますか?を参照してください。
次の例では、Pervasive PSQL で提供される upper.alt ファイルを使用して、デフォルトのコレーティング シーケンスを設定します。テーブル t1 は、3 つのテキスト列と 3 つのテキスト以外の列で作成されます。SELECT ステートメントを Pervasive PSQL のシステム テーブルに対して実行し、t1 内の列の ID、データ型、サイズ、および属性を返します。結果は、3 つのテキスト列が "UPPER" 属性を持っていることを示しています。
SET DEFAULTCOLLATE = 'file_path\upper.alt'
DROP TABLE t1
CREATE TABLE t1 (c1 INT, c2 CHAR(10), c3 BINARY(10), c4 VARCHAR(10), c5 LONGVARBINARY, c6 LONGVARCHAR)
SELECT * FROM x$attrib WHERE xa$id in
(SELECT xe$id FROM x$field WHERE xe$file =
(SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
327 O 265 UPPER
329 O 265 UPPER
331 O 265 UPPER
3 行が影響を受けました。
============
次の例でもテーブル t1 を引き続き使用します。ALTER TABLE ステートメントによって、テキスト列 c2 を CHAR から INTEGER に変更します。SELECT ステートメントの結果は、2 列だけがデフォルト コレーティングの影響を受けていることを示しています。
ALTER TABLE t1 ALTER c2 INT
SELECT * FROM x$attrib WHERE xa$id in
(SELECT xe$id FROM x$field WHERE xe$file =
(SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
329 O 265 UPPER
331 O 265 UPPER
2 行が影響を受けました。
============
次の例では、ALTER TABLE ステートメントを使用して、テーブル t1 の列 c1 を INTEGER から CHAR に変更します。SELECT ステートメントの結果は、3 列がデフォルト コレーティングの影響を受けていることを示しています。
ALTER TABLE t1 ALTER c1 CHAR(10)
SELECT * FROM x$attrib WHERE xa$id in
(SELECT xe$id FROM x$field WHERE xe$file =
(SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
326 O 265 UPPER
329 O 265 UPPER
331 O 265 UPPER
3 行が影響を受けました。
関連項目