Question & Answer
Question
ALTER TABLE ステートメントを実行したあと、SQL プロシージャーから実行している照会の結果セット並び順が変わりました。なぜでしょうか。
Answer
ALTER TABLE ステートメントを実行すると、その表を参照している静的ステートメントを含むパッケージや SQL プロシージャーなどはいったん無効となり、次に実行要求があったタイミングで暗黙的に再バインドが行なわれます。また動的ステートメントの場合は、動的ステートメントキャッシュがいったん無効となり、同様に次に実行要求があったタイミングで再度アクセスプランが選択されます。
その結果、以前と異なるアクセスプランが選択されることがあり、照会に ORDER BY 節が指定されていない場合は結果セットの並び順が変わる可能性があります。
ORDER BY 節を指定していない照会では、結果セットの並び順は保証されません。業務上、並び順を固定する必要がある場合は ORDER BY 節を指定してください。
運用上の考慮点
アクセスプランが変更される可能性がありますので、ALTER TABLE ステートメントを実行する際は、該当表を参照するパッケージ、ステートメント、SQL ルーチンのアクセスプランを必要に応じて確認してください。
関連情報
ALTER TABLEステートメント
表2. 列の変更のカスケード効果
オブジェクトを変更するときのステートメント従属関係
結果表における行の順序の差異
>同一の SELECT ステートメントに対して複数の結果表がある場合、それらの表の行は同じ順序で表示されない可能性があります。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
その結果、以前と異なるアクセスプランが選択されることがあり、照会に ORDER BY 節が指定されていない場合は結果セットの並び順が変わる可能性があります。
ORDER BY 節を指定していない照会では、結果セットの並び順は保証されません。業務上、並び順を固定する必要がある場合は ORDER BY 節を指定してください。
運用上の考慮点
アクセスプランが変更される可能性がありますので、ALTER TABLE ステートメントを実行する際は、該当表を参照するパッケージ、ステートメント、SQL ルーチンのアクセスプランを必要に応じて確認してください。
関連情報
ALTER TABLEステートメント
表2. 列の変更のカスケード効果
操作 | 影響 |
従属パッケージ、トリガー、または SQL ルーチンを持つ表の列を変更する。 | オブジェクトが無効とマークされ、次回の使用時に再度有効性を確かめられます。 |
オブジェクトを変更するときのステートメント従属関係
結果表における行の順序の差異
>同一の SELECT ステートメントに対して複数の結果表がある場合、それらの表の行は同じ順序で表示されない可能性があります。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkcAAE","label":"Compiler"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Historical Number
EFC26C63CFF8A4F449257766002A929D
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
jpn1J1000763