2011-10-13 7 views
31

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

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

+6

はい、彼らは意志 - しかし、それを試して見つけるための最も簡単な方法はないですか? –

+0

いいえ、最も速い方法はGoogle検索です:) –

答えて

34

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

私は、Microsoftが表示はかなり明確であるものを合計すると思う:

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

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

ビューは自動的にキャッシュされません。あなたのビューからSELECT、データベースは

あなたの文では、ビューで「見る」のデータを使用して結果がセット取得するためにビューに保存されたクエリを実行する必要があり

は、実際に格納されていませんどこでも、そしてその場でテーブルから生成されます。

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

+0

+1またはインライン展開されたマクロで、あらかじめ計算された結果ではなく、囲みコードの一部を形成します。 – MatBailie

+0

ビュー内のデータがどこにも格納されていない場合、ビューに行を追加するとき 'INSERT INTO dbo.MyView(myCol)VALUES( 'test')' - どこに格納されますか? – BornToCode

+1

ビューにレコードを挿入できません。 – Curt

4

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

6

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

0

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

0

はい、レコードは毎回更新されます。

しかし、テーブル定義を変更した場合。 refreshの表示を忘れないでください。

のexec sp_refreshviewの@viewname

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

関連する問題