【发布时间】:2020-03-23 20:34:19
【问题描述】:
- 创建表
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
- 使用 select * from vw_test 运行视图
结果是:
tes_id tes_name tes_date
1 tiz com1
2 cla com2
3 mar com3
**我知道我必须运行 alter view 来更新它,但是如果我忘记了怎么办?
是否有自动更新视图的选项?**
【问题讨论】:
-
自动更新视图是什么意思?
-
不仅没有办法自动更新视图,而且最佳实践是指定视图中的每个列名,即不要使用
*,因为这会导致不可预知的行为。此外,建议使用SCHEMABINDING 以确保在视图具有依赖关系时无法修改它。所以总而言之,你应该考虑限制这个过程,而不是让它自动化。
标签: sql-server sql-server-2008 view sql-server-2012 alter-table