SQL Server,添加字段和视图

问题描述 投票:0回答:2

-创建表格

CREATE TABLE [dbo].[tb_tes_test](
[tes_id] [int] IDENTITY(1,1) NOT NULL,
[tes_name] [varchar](50) NULL,
[tes_date] [datetime] NULL,
CONSTRAINT [PK_tb_tit_titti] PRIMARY KEY CLUSTERED 
(
    [tes_id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

-将记录添加到表中

tes_id  tes_name tes_date
1 tiz   2019-11-28 00:00:00.000
2 cla   2019-10-28 00:00:00.000
3 mar   2019-09-28 00:00:00.000

-为表创建视图

CREATE VIEW [dbo].[vw_test]
AS
SELECT dbo.tb_tes_test.*
FROM dbo.tb_tes_test

-向两个现有字段之间的表添加新字段-插入字段的值

tes_id  tes_name    tes_candy   tes_date 1  
1    tiz    com1    2019-11-28 00:00:00.000
2    cla    com2    2019-10-28 00:00:00.000 
3   mar com3    2019-09-28 00:00:00.000

-通过选择*从vw_test运行视图

结果是:

tes_id  tes_name    tes_date
1   tiz com1
2   cla com2
3   mar com3

**我知道我必须运行alter view对其进行更新,但是如果我忘记这样做,该怎么办?

是否有自动更新视图的选项?**

sql-server sql-server-2008 view sql-server-2012 alter-table
2个回答
1
投票

将新列添加到表后,您将无法自动更新视图。视图是存储的查询,可访问一个或多个表或视图。

由于视图通常用于安全性目的,因此当您不希望用户访问表中的所有列(例如隐藏员工薪水等)时。具有自动添加新列的视图将不是一个好主意。恐怕如果您要将列添加到视图中,那么您将需要做出有意识的决定以执行此操作。

如果在视图定义中添加SCHEMABINDING构造,那么当您尝试将新列添加到表中时,由于从视图绑定到表而将阻止您。这将提醒您同时更新视图。


0
投票

尝试使用刷新视图功能。

© www.soinside.com 2019 - 2024. All rights reserved.