web-dev-qa-db-ja.com

ビューは自動的に更新されますか

JOINまたはCROSS APPLY 2つのテーブルを作成し、VIEWを作成します。2つのテーブルのいずれかを更新するか、レコードを追加すると、ビューは自動的に更新されますか?

これらの新しいレコードはVIEWに表示されますか?

46
Hammad Khan

はい、使用するたびに更新されます。

マイクロソフトは、ビューが何であるかを明確にまとめていると思います。

ビューは、仮想テーブルまたはストアドクエリのいずれかと考えることができます。

http://msdn.Microsoft.com/en-us/library/aa214068%28v=sql.80%29.aspx

ビューは自動的にキャッシュされません。

ビューからSELECTを使用する場合、データベースはビューに保存されているクエリを実行して、ステートメントで使用する結果セットを取得する必要があります

ビューで「見る」データは、実際にはどこにも保存されず、テーブルからその場で生成されます。

このため、非常に複雑なビューを慎重に実行する必要があります。結果セットにアクセスする前に、ビューを実行する必要があることを常に考慮してください。

54
Curt

ビューは基本的に保存されたクエリであり、データを保持していないため、作成されたテーブルが更新されても更新されません。ただし、ビューを参照すると、その基になっているクエリが実行されるため、ベーステーブルに加えられた変更が表示されます。

11
OTTA

はい。ビューは、基になるテーブル/ビューに対するSELECTクエリです。基になるテーブルのデータを変更し、その範囲がビュー定義に含まれている場合、変更されたデータが表示されます。

5
user596075

はい、記録は毎回更新されます。

ただし、テーブル定義を変更する場合。 refreshビューを忘れないでください。

exec sp_refreshview @viewname

ビュー定義でSELECT *を使用しないで、代わりにcolumn nameを使用してください

3
yogen darji

@ Curt's Answerに追加するだけで、基になるテーブルに加えた更新がデータの追加または削除である場合、ビューは新しいデータで自動的に更新されます。基礎となるテーブル(基本的にはViewの定義)から列を追加または削除する場合、sp_RefreshViewストアドプロシージャを実行して、ビューに新しいスキーマを反映する必要があります。

2
Programmerzzz