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'
.
这也可能对其他社区成员有益。
我是 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
您在 tabledbo.MyTable
中有一列(或 您的通用模式),称为BusinessName
,其值为'MySmartCompany'
.
这也可能对其他社区成员有益。