ビューを定義する SELECT 文の中に GROUP BY 句や集合関数がないか、または UNION 句を伴わない場合は、ビューを更新できます。
テーブルに挿入した文字列は、テーブルが大文字と小文字を区別するかどうかにかかわらず、常に入力された大文字と小文字がそのまま格納されます。そのため、文字列 Value で更新した文字データ型カラムは、常に大文字の V と残りの文字が小文字でデータベースに格納されます。SELECT
文は、文字列を Value として返します。ただし、データベースで大文字と小文字が区別されない場合は、すべての比較において Value は value、VALUE などと同じと見なされます。さらに、単一カラムのプライマリキーにエントリ Value
がある場合は、プライマリキーがユニークでなくなるので、INSERT 文による value の追加は拒否されます。
オプションの FROM 句で、ジョインに基づいてテーブルを更新できます。FROM 句がある場合、WHERE 句は FROM 句のローが条件を満たしているかどうかを調べます。データの更新は、UPDATE キーワードのすぐ後のテーブルリストの中だけで行われます。
FROM 句を使用する場合、更新されるテーブル名をその文の両方の部分で同じように修飾することが重要です。一方の場所で相関名が使用されている場合は、もう一方の場所でも同じ相関名を使用します。修飾方法が異なると、エラーが発生します。
構文 1 と構文 2 は SQL Remote のみに適用されます。
構文 2 で OLD SUBSCRIBE BY 式と NEW SUBSCRIBE BY 式を付けない場合は BEFORE トリガーで使用する必要があります。
構文 2 で OLD SUBSCRIBE BY 式と NEW SUBSCRIBE BY 式を付ける場合はどこでも使用できます。
構文 2 は、必ず SQL Remote と一緒に使用します。構文 3 に OLD 式も NEW 式も使用しない場合は、関連する値にアクセスできるように、BEFORE トリガー内で使用します。この目的は、リストが変更されるたびに、SUBSCRIBE
BY 値の完全なリストを提供することです。これは、SQL Remote トリガーに配置され、データベースサーバーが SUBSCRIBE BY 値の現在のリストを計算できるようにします。両方のリストがトランザクションログ内に記録されます。
UPDATE 文の構文 2 を使用すると、古い SUBSCRIBE BY リストと新しい SUBSCRIBE BY リストを明示的に指定して、SQL Remote トリガーの効率を高めることができます。このリストがないと、データベースサーバーはパブリケーション定義から古い
SUBSCRIBE BY リストを計算します。通常は、新しい SUBSCRIBE BY リストは古い SUBSCRIBE BY リストとほんのわずか異なるだけなので、古いリストの処理は 2 回行われます。古いリストと新しいリストの両方を指定すると、この無駄な作業を避けることができます。
OLD SUBSCRIBE BY 構文と NEW SUBSCRIBE BY 構文は、同じ SUBSCRIBE BY 式で同じトリガーを使用し、たくさんのテーブルを更新する場合には特に便利です。これにより、パフォーマンスが大幅に向上します。