【发布时间】:2021-03-01 09:13:35
【问题描述】:
我想创建一个选择 2 个表的所有列的视图。我必须选择所有列(我不能写列名,因为可以添加列)。
我的问题是两个表都有同名的列。而且我无法更改列名。
CREATE OR ALTER VIEW [dbo].[vwSomething]
AS
SELECT
dbo.A.*,
dbo.B.*
FROM
dbo.A
INNER JOIN
dbo.B ON dbo.A.AID = dbo.B.AID
GO
【问题讨论】:
-
谁在向基表添加列并且自己不能修改视图?也许设置一个定期刷新视图的代理作业?
-
如果您使用
SELECT *创建视图,稍后添加到基础表的列将自动出现在视图中。请参阅stackoverflow.com/q/22716598/95 了解更多信息。 -
我知道,我有一个运行
EXECUTE sp_refreshview...的proc -
您的问题是什么?如何要求所有列名在数据库中的所有表中都是唯一的? DDL trigger 会让您劝阻使用冲突的列名。
-
@SMor 没有懒惰的借口! - 这是一个供多个客户使用的系统,每个客户都可以在表格中添加他想要的列。
标签: sql sql-server tsql sql-view