次の方法で共有


パーティション ビューでのデータ変更

更新 : 2005 年 12 月 5 日

パーティション ビューが更新可能でない場合、そのパーティション ビューは元のテーブルの読み取り専用コピーとしてのみ使用できます。更新可能なパーティション ビューでは、元のテーブルのすべての機能を使用できます。

ビューが SELECT ステートメントのセットで、その個々の結果セットが UNION ALL ステートメントを使用して 1 つに結合されている場合、ビューは更新可能なパーティション ビューと見なされます。各 SELECT ステートメントは、SQL Server の 1 つのベース テーブルを参照します。このテーブルは、ローカル テーブルまたはリンク テーブルのいずれかで、4 つの部分で構成される名前、OPENROWSET 関数、または OPENDATASOURCE 関数を使用して参照できます。パススルー クエリを指定する OPENDATASOURCE 関数または OPENROWSET 関数は使用できません。

また、ビューを参照するデータ変更ステートメントは、INSERT、UPDATE、および DELETE の各ステートメントに対して定義されているルールに従う必要があります。

パーティション ビューが複数のサーバーに分散されている場合は、ベース テーブルでトリガまたは連鎖操作を使用しないでください。トリガまたは連鎖操作を実行すると、基になるデータが変更されてビュー定義に影響する可能性があります。

分散パーティション ビューを更新することができるのは、ユーザーがビューの基になる各テーブルの CONTROL 権限、ALTER 権限、TAKE OWNERSHIP 権限、または VIEW DEFINITION 権限を持っている場合だけです。詳細については、「分散パーティション ビューのメタデータ表示のトラブルシューティング」を参照してください。

ms187067.note(ja-jp,SQL.90).gifメモ :
分散パーティション ビューを使用してデータを変更できるのは、Microsoft SQL Server 2005 Enterprise Edition または Microsoft SQL Server 2005 Developer Edition をインストールした場合だけです。ただし、ローカル パーティション ビューを使用したデータ変更は、SQL Server 2005 のすべてのエディションで実行できます。

INSERT ステートメント

INSERT ステートメントでは、パーティション ビューを介してメンバ テーブルにデータが追加されます。INSERT ステートメントは、以下のルールに従って作成する必要があります。

  • INSERT ステートメントには、すべての列を含める必要があります。ベース テーブル内で NULL 値を許容する列や、ベース テーブル内に DEFAULT 制約が定義されている列も例外ではありません。
  • INSERT ステートメントの VALUES 句に DEFAULT キーワードを指定することはできません。
  • INSERT ステートメントでは、いずれかのメンバ テーブルのパーティション分割列に定義されている CHECK 制約のロジックに応じた値を指定する必要があります。
  • メンバ テーブルに ID プロパティが設定された列が含まれている場合は、INSERT ステートメントを使用できません。
  • メンバ テーブルに timestamp 列が含まれている場合は、INSERT ステートメントを使用できません。
  • 同一ビューまたはいずれかのメンバ テーブルとの自己結合がある場合は、INSERT ステートメントを使用できません。

UPDATE ステートメント

UPDATE ステートメントでは、パーティション ビューを介して 1 つ以上のメンバ テーブル内のデータが変更されます。UPDATE ステートメントは、以下のルールに従って作成する必要があります。

  • UPDATE ステートメントで SET 句の値として DEFAULT キーワードを指定することはできません。対応するメンバ テーブルでその列に DEFAULT 値が定義されている場合も例外ではありません。
  • ID プロパティが設定されている列の値を変更できません。ただし、他の列は更新できます。
  • PRIMARY KEY の値は、列に text データ、image データ、または ntext データが含まれている場合は変更できません。
  • ベース テーブルに timestamp 列が含まれている場合は、更新できません。
  • 同一ビューまたはいずれかのメンバ テーブルとの自己結合がある場合は、更新できません。

DELETE ステートメント

DELETE ステートメントでは、パーティション ビューを介して 1 つ以上のメンバ テーブル内のデータが削除されます。同一ビューまたはいずれかのメンバ テーブルとの自己結合がある場合は、DELETE ステートメントを使用できません。

参照

概念

連合データベース サーバーの実装

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

新しい内容 :
  • 分散パーティション ビューの更新に必要な権限についての情報を追加しました。
変更内容 :
  • 「1 台のサーバーに対してローカルなパーティション ビューの場合、トリガまたは連鎖更新や連鎖削除が 1 つ以上のメンバ テーブルで定義されていると、ビューを更新できません。」という文章を削除しました。