Azure / Transact SQL:动态创建具有相同名称的表的视图或在创建视图后添加表

Azure / Transact SQL: Dynamically create View of tables with the same name OR add tables after View creation

我是 Azure 的新手,对 SQL 不是很了解,因此非常感谢您的帮助。 我有一个数据库,每个用户都有一个架构。每个模式都有相同结构的 tables,名称相同,例如“Table”。

我现在需要另一个模式中的视图,它提供来自所有 table 的所有行的只读联合 Table

我成功创建了一个架构,比如说 Views,处理了它的权限并创建了一个视图,“TableView”,其中 SQL 来自 分区视图 @ docs.microsoft.com:

CREATE VIEW Views.TableView
AS  
SELECT *
  FROM Schema1.Table
UNION ALL  
SELECT *
  FROM Schema2.Table
UNION ALL  
SELECT *
  FROM Schema3.Table
...
GO

我现在希望此视图在添加甚至可能删除未来模式 (SchemaX) 时是动态的,而不必一遍又一遍地重复 DROP 和 CREATE TableView

是否有可能以自动查询所有同名 table 的方式创建视图?或者也许有一些方法可以 'add' 额外 table post 创建?

我可以通过查询 INFORMATION_SCHEMA 获得所有 SchemaX.Table 的列表,但除了 python 脚本 DROP 并再次创建视图外,我迷路了。

谢谢

感谢@larnu 的评论,非常有用和专业:

  • 要动态地实现这一点,不可能VIEW 中完成。 您将不得不使用存储过程,这意味着您不能 SELECT 之类的简单内容,使其更难使用。
  • 而不是有 17 个 tables,所有相同的,在不同的模式上你 有一个 table,有一列 BusinessName。代替 MySmartCompany.Mytable 您在 table dbo.MyTable 中有一列(或 您的通用模式),称为 BusinessName,其值为 'MySmartCompany'.

这也可能对其他社区成员有益。