为多个字段创建同义词(或类似)

Posted

技术标签:

【中文标题】为多个字段创建同义词(或类似)【英文标题】:Create a synonym (or similar) for multiple fields 【发布时间】:2019-07-18 01:25:26 【问题描述】:

我使用的是 SQL Server 2012 Express。我想创建一个同义词(或类似的内联解决方案)来替换多个表中的多个标准列名。

例如,我的数据库中几乎每个表都有 3 个相同的列:IDDateAddedTenantID。我想有一种方法来选择这些,而不必每次都列出来。

我尝试了一些如下的简单代码来尝试实现这一点,但创建同义词部分的语法不正确。我已经用谷歌搜索了,但找不到任何可以提供我所追求的内联解决方案的东西。

例如,而不是:

SELECT [ID], [DateAdded], [TenantID] 
FROM TableName

相反,我希望使用这段代码来创建同义词:

CREATE SYNONYM [dbo].[Fields] FOR [ID], [DateAdded], [TenantID]

然后我可以重复编写查询:

SELECT dbo.[Fields] FROM TableName

TableName 每次都不同。

我需要它来处理许多表,因此为每个表创建一个视图并不令人满意。

也许同义词不是正确的解决方案,但如果不是,那么我很乐意听到提供内联解决方案的其他方式。

【问题讨论】:

【参考方案1】:

关注该帖子一段时间,因为该主题似乎很有趣,并且对我来说是一个学习机会 :) 不确定这是否可能,但您可以考虑将动态查询执行作为替代方案,如下所示-

DECLARE @C_Names VARCHAR(MAX)
DECLARE @T_Name VARCHER(MAX)

SET @C_Names = '[ID], [DateAdded], [TenantID]'
SET @T_Name = 'your_table_name'
--AS column names are fixed, you can now change the table name
--only and execute the script to get your desired output

EXEC('SELECT '+@C_Names+' FROM '+@T_Name+'')

希望这至少能给你一些希望。

【讨论】:

以上是关于为多个字段创建同义词(或类似)的主要内容,如果未能解决你的问题,请参考以下文章

东软实习之数据库(12)——序列索引同义词

DB2 z/OS - 为现有表创建表别名/同义词,指向其他现有表

oracle 同义词

Oracle中视图和同义词的区别

SQL基础--同义词

Python/Django:数据库模型中字段“类型”的同义词(保留的内置符号)