gpt4 book ai didi

sql - 如果我的表定义更新了,为什么 View 没有更新?

转载 作者:行者123 更新时间:2023-12-03 19:56:21 26 4
gpt4 key购买 nike

假设我有一个表定义如下:

CREATE TABLE Test
(
a INT,
b INT
)

在那之后,我在 table 上创建一个 View ,
CREATE VIEW ViewTest
AS
SELECT * FROM Test

之后,当我在 View 上运行查询时,它会返回两列,即 A & B .

而且,后来我更新了表的定义并在其中插入了一个新列:
ALTER TABLE Test ADD c INT

但是,现在当我运行 View 时,它再次返回 View 语句,它返回相同数量的列,现在是三列。

我只是想知道为什么?因为我使用了 Select * 语句,所以每次它都应该返回整个列。

最佳答案

创建 View 时,它会将 View 定义作为元数据存储在系统表中。即使您使用 SELECT * FROM它将存储确切的列名,例如SELECT a, b FROM
如果随后更新基表, View 的元数据定义仍然保持不变,因此不会选取任何新列。

您需要删除并重新创建 View 或运行 sp_refreshview更新定义

关于sql - 如果我的表定义更新了,为什么 View 没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28562955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com