问题描述
我是Azure的新手,但对sql不太了解,因此不胜感激。
我有一个数据库,每个用户都有一个架构。每个模式都有结构相同且名称相同的表,例如“ Table
”。
我现在需要另一个模式中的视图,该视图提供所有表Table
中所有行的只读联合。
我成功地创建了一个架构,例如Views
,使用来自分区视图的以下sql @,创建了一个视图TableView
,并创建了一个视图“ CREATE VIEW Views.TableView
AS
SELECT *
FROM Schema1.Table
UNION ALL
SELECT *
FROM Schema2.Table
UNION ALL
SELECT *
FROM Schema3.Table
...
GO
” {3}}:
SchemaX
我现在希望此视图能够动态化,因为添加或什至可以删除将来的架构(TableView
),而不必一遍又一遍地重复DROP和CREATE SchemaX.Table
。
是否可以以自动查询具有相同名称的所有表的方式来创建视图?还是有某种方法可以在创建后“添加”其他表格?
我可以通过查询informatION_SCHEMA
来获得所有{{1}}的列表,但是除了使用python脚本DROP并再次创建视图外,我迷路了。
谢谢
解决方法
感谢@larnu的评论,它非常有用且专业:
- 要动态地实现此目标,在
VIEW
中进行操作将不可能。 您将不得不使用存储过程,这意味着您不能 像SELECT
这样的简单事物,使其难以使用。 - 在不同的模式下,您没有拥有全部相同的17个表,而是
有一个表,其列为
BusinessName
。代替MySmartCompany.Mytable
在表dbo.MyTable
中有一列(或 您的通用模式),称为BusinessName
,其值为'MySmartCompany'
。
这对其他社区成员也可能有益。