エンジニア

Viewのリフレッシュ方法とその必要性

エンジニア

こんにちは、ロク(@finansial_se_)です!

さっそくですが、Viewをリフレッシュするクエリは

Exec sp_refreshview 'ビューの名前' ;

となります。

 

このクエリを打つことで、任意のViewをリフレッシュすることができます。

 

ここでは、このViewのリフレッシュのクエリの使い方、

そしてこの View のリフレッシュがどんな場合に必要なのかを説明していきます!

 

Viewのリフレッシュはいつ必要なのか

パソコン

そもそもViewのリフレッシュってどういう時に必要なの?

例えば、あるテーブル[Book]を SELECT している[BookView]というViewがあるとします。

 

Book]テーブルの、あるカラムの桁数を拡張した場合、

つまり、char(5) → char(8) などという場合でも、

通常であれば同じDBから 

SELECT * from BookView 

として [BookView] を見ることは可能です。

 

しかし、別のサーバーからリンクサーバーを経由して [BookView] を見ようとした場合、

つまり、

SELECT * from サーバー名.DB名.dbo.BookView

とすると、桁数を拡張したカラムの影響でエラーとなり、見られないという現象が起きます。

 

[BookView] の定義自体に変更がなくても、参照先のテーブル(この場合でいうと [Book]テーブル)に、

例であげたカラムの桁数拡張のような定義変更などがあった場合は、Viewのリフレッシュが必要になります。

 

また、このリフレッシュは代わりにALTER文で行うことも可能です。

その際のクエリは、

リフレッシュしたいクエリのCREATE文の "CREATE" を "ALTER" に変えるだけとなります。

 

改めて、Viewのリフレッシュを行うクエリは、

Exec sp_refreshview 'ビューの名前' ;

です!

テーブルの定義変更を行った際は、Viewのリフレッシュが必要になるかもしれないと頭に入れておきましょう。

 

これを頭に入れておくだけで、

Viewの参照が出来なくなったんだけどなんでだろう。

などという障害を防ぐことができます。

ぜひ頭に入れておきましょう!

-エンジニア
-

© 2020 金融系エンジニアブログ Powered by AFFINGER5