適用対象:SQL Server
多くの場合、結果ウィンドウに表示される結果セットを更新できます (Visual Database Tools)。 ただし、場合によってはできません。
一般に、結果を更新するには、 クエリ およびビュー デザイナー ツール (Visual Database Tools) に、テーブル内の行を一意に識別するための十分な情報が必要です。 たとえば、クエリに出力リストに主キーが含まれている場合があります。 さらに、データベースを更新するための十分なアクセス許可が必要です。
クエリがビューに基づいている場合は、更新できる可能性があります。 ビュー自体だけでなく、ビュー内の基になるテーブルにも適用される点を除き、同じガイドラインが適用されます。
手記
クエリおよびビュー デザイナーでは、ビューに基づいて結果セットを更新できるかどうかを事前に判断することはできません。 そのため、更新できない可能性がある場合でも、すべてのビューが表示されます。
次の表は、[結果] ウィンドウでクエリ結果を更新できない可能性がある特定のインスタンスをまとめたものです。 多くの場合、クエリ結果を更新できるかどうかは、使用しているデータベースによって決まります。
| クエリ | 結果を更新できますか? |
|---|---|
| 出力リストの主キーを持つ 1 つのテーブルに基づくクエリ | はい (以下を除く)。 |
| 一意のインデックスがなく、主キーがないテーブルに基づくクエリ | クエリとデータベースによって異なります。 一部のデータベースでは、レコードを一意に識別するのに十分な情報が使用可能な場合、更新が許可されます。 |
| 結合されていない複数のテーブルに基づくクエリ | いいえ。 |
| データベースで読み取り専用としてマークされたデータに基づいてクエリを実行する | いいえ。 |
| 制約のない 1 つのテーブルを含むビューに基づくクエリ | はい (以下を除く)。 |
| 一対一リレーションシップで結合されたテーブルに基づくクエリ | はい (以下を除く)。 |
| 一対多リレーションシップで結合されたテーブルに基づくクエリ | 通常は。 |
| 多対多リレーションシップがある 3 つ以上のテーブルに基づくクエリ | いいえ。 |
| 更新アクセス許可が付与されていないテーブルに基づくクエリ | 削除はできますが、更新できません。 |
| 削除アクセス許可が付与されていないテーブルに基づくクエリ | 更新はできますが、削除することはできません。 |
| 集計クエリ | いいえ。 |
| 合計または集計関数を含むサブクエリに基づくクエリ | いいえ。 |
重複する行を除外する DISTINCT キーワードを含むクエリ |
いいえ。 |
FROM句にテーブルを返すユーザー定義関数が含まれており、ユーザー定義関数に複数の select ステートメントが含まれているクエリ |
いいえ。 |
FROM句にインライン ユーザー定義関数が含まれるクエリ |
はい。 |
さらに、クエリ結果の特定の列を更新できない場合があります。 次の一覧は、[結果] ウィンドウで更新できない特定の種類の列をまとめたものです。
- 式に基づく列
- スカラー ユーザー定義関数に基づく列
- 別のユーザーによって削除された行または列
- 別のユーザーによってロックされている行または列 (ロックされた行は通常、ロック解除されるとすぐに更新できます)
- タイムスタンプまたは BLOB 列