SQLServerのViewについて

kaienn
2013-09-03 12:56 2160 1

Aテーブル
A_View
があったとして、
テーブルで値を変更した場合は
Viewに反映されますよね?

逆に

Viewで値を変更した場合は
テーブルに反映されますか?

コメント

2013年 09月 09日 (12:02)
こんにちは。
イノ(inno)です。

結論から言いますと。。
デーブルのデータを変更した場合、ビューも反映されます。
ビューのデータを変更した場合、テーブルにも反映されます。
ですが、ビューを利用したデータ変更はよくないので、
可能であればテーブルのデータを変更するようにした方がいいです。

下記の例文のSQLを作成しましたので、
実際にテスト環境のサーバーでテストをしてみてください。

-- #### テーブル作成
CREATE TABLE dbo.TempData
(
Sn int
,Data1 varchar(10)
)
GO

-- #### テーブルのビューを作成
CREATE VIEW dbo.vTempData
AS
SELECT * FROM dbo.TempData WITH (NOLOCK)
GO

-- #### テストデータ登録
INSERT INTO dbo.TempData
SELECT 1, 'A' UNION ALL
SELECT 2, 'B' UNION ALL
SELECT 3, 'C'
GO

-- #### テーブルのデータの確認
SELECT * FROM dbo.TempData
-- ##実行結果
Sn Data1
1 A
2 B
3 C

-- #### ビューのデータの確認
SELECT * FROM dbo.vTempData
-- ##実行結果
Sn Data1
1 A
2 B
3 C

-- #### テーブルのデータを修正
UPDATE dbo.TempData
SET Data1 = 'D'
WHERE Sn = 2

-- #### テーブルのデータの確認
SELECT * FROM dbo.TempData
-- ##実行結果
Sn Data1
1 A
2 D
3 C

-- #### ビューのデータの確認
SELECT * FROM dbo.vTempData
-- ##実行結果
Sn Data1
1 A
2 D
3 C

-- #### ビューのデータを修正
UPDATE dbo.vTempData
SET Data1 = 'E'
WHERE Sn = 2

-- #### テーブルのデータの確認
SELECT * FROM dbo.TempData
-- ##実行結果
Sn Data1
1 A
2 E
3 C

-- #### ビューのデータの確認
SELECT * FROM dbo.vTempData
-- ##実行結果
Sn Data1
1 A
2 E
3 C