ビューには、明示的に[VAR]CHARACTER(n) [CHARACTER SET …]句を含めることができます。server character set(CHARACTER SET LATINなど)が指定されない場合には、ビュー定義は[VAR]CHARACTER(n)句を展開して、その指定を完了します。
展開は、以下のルールに従って行なわれます。
- この句がビュー内の式に適用される場合には、式がCHARACTERタイプであれば、式のserver character setが使用されます。
- 適用されない場合、server character setは、ビューの作成者/変更者のデフォルトの文字セットに設定されます。
もしビューの作成ユーザーのデフォルト セッション文字セットが使用されないとすると、ユーザーのデフォルト セッション文字セットがそれぞれの個別ユーザーに依存することになり、デフォルト セッション文字セットが異なる2人のユーザーがそのビューから異なる結果を得る可能性があります。それで、ビュー作成ユーザーのデフォルト セッション文字セットが使用されることになっています。
たとえば、CREATE USERのデフォルトの文字セットがKanji1である場合、ビューは、以下に示すように展開されます。
元のビュー定義は、以下のとおりです。
CREATE TABLE table_1 ( cu CHARACTER(5) CHARACTER SET UNICODE); CREATE VIEW view_1 AS SELECT cu (CHARACTER(6)) FROM table_1;
展開されたビュー定義は、以下のとおりです。
CREATE VIEW v1 AS SELECT cu (CHARACTER(6), CHARACTER SET UNICODE) FROM table_1;
同様に、次のビュー定義が以下に示すように展開されます。
元のビュー定義は、以下のとおりです。
CREATE VIEW v2 AS SELECT 123 (CHARACTER(12));
展開されたビュー定義は、以下のとおりです。
CREATE VIEW v2 AS SELECT 123 (CHARACTER(12), CHARACTER SET KANJI1);