sql - 如何使用动态表名?
问题描述
我有一个数据库,每个公司都有自己的表和所有公司的相同表名,例如:
[COMPANY 1$Cities], [COMPANY 1$Customers], [COMPANY 1$Documents]
[COMPANY 2$Cities], [COMPANY 2$Customers], [COMPANY 2$Documents]
[COMPANY 3$Cities], [COMPANY 3$Customers], [COMPANY 3$Documents]
当我从特定公司选择一个值时,我有一个可以正常工作的存储过程。
但是,问题是我必须为我们在数据库中拥有的每家公司创建这个存储过程,这很多(而且我认为这不是最好的决定,基于数据库性能)
最后,我想知道是否有一种方法可以使用TABLE NAME中的参数从特定公司中选择值。
就像是SELECT +@CityName+ FROM [dbo].[@CompanyName+$Cities]
解决方案
您不需要为此任务编写动态 SQL。创建一个数据库VIEW
,您可以在其中合并所有公司的表并添加固定的公司代码。然后,您可以根据该公司代码过滤您的数据,并使用通用 SQL 获得您需要的内容。
但无论如何,这样的数据库设计非常奇怪且难以管理。您可以使用分区表并应用数据安全性来限制公司上的数据。
推荐阅读
- angular - 带有 Tailwind CSS、PostCSS、SCSS 和 MiniCssExtractPlugin 的 Angular 9 无法编译
- python - 如何使用 pandas.read_excel 重命名索引列
- go - 如何在 Go 中为接口分配指针
- spring-boot - 一次发布请求进行多次更新
- python - pandas 合并错误“unhashable type: dict”的解决方法
- elasticsearch - 结合弹性搜索的两个查询?
- flutter - 颤振/飞镖更新
- emulation - risc-v c 模拟器是如何工作的?
- anylogic - AnyLogic - 仿真模型文档
- c++ - C++ exp() 函数真的很奇怪