web-dev-qa-db-ja.com

ビューを更新すると、元のテーブルも更新されますか

仮に、EmployeeとLocationsの2つのテーブルがあります。さらに、EmployeeとLocationsを結合して作成されたviewEmpLocationビューがあります。

ビューを更新すると、元のテーブルのデータも更新されますか?

31
Vaibhav Jain

Microsoft SQL Serverのビューの使用 を参照してください

ビューを介してデータを変更する場合(つまり、INSERTまたはUPDATEステートメントを使用する場合)、ビューのタイプに応じて特定の制限が存在します。複数のテーブルにアクセスするビューは、ビュー内のテーブルの1つのみを変更できます。関数を使用するビュー、DISTINCTを指定するビュー、またはGROUP BY句を使用するビューは更新されない場合があります。さらに、次のタイプのビューではデータの挿入が禁止されています。

* views having columns with derived (i.e., computed) data in the SELECT-list  
* views that do not contain all columns defined as NOT NULL from the tables from which they were defined

また、WITH CHECK OPTIONが指定されていない限り、ビューを介してデータにアクセスまたはアクセスできなくなるように、ビューを介してデータを挿入または更新することもできます。

24
KM.

はい。

ビュー内のデータには、ビューを構成するテーブルから独立した存在はありません。ビューは、本質的に、テーブルとしてマスカレードするストアドSELECTステートメントです。データは元のテーブルに保存され、表示したいときにのみビューに「アセンブル」されます。ビューが更新可能である(すべてのビューがそうであるわけではない)場合、更新はテーブルデータに適用されます。

19
Larry Lustig

ビューでトリガーを使用して、実際のテーブルに対して挿入/更新/削除を実行できます。

http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1/

4
Kyle J V