首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不将其添加到数据库的同义词或整个脚本的别名

不将其添加到数据库的同义词或整个脚本的别名
EN

Stack Overflow用户
提问于 2018-04-18 18:07:50
回答 2查看 56关注 0票数 1

我正在写一个很长的脚本来在数据库之间迁移数据,我被告知不能使用同义词,因为它们是全局的,可能会与其他脚本打乱。我被告知要使用完全限定的表名、别名或同义词以外的其他名称。但我认为一定有更好的方法。

有没有一种方法可以有效地使用所谓的“同义词”,而不是实际创建真正的同义词?或者只为我的脚本创建本地同义词?或者,有没有办法将表名别名的作用域扩展到整个脚本,这样我就不必在每次插入/选择时都编写它们了?

这一切都是为了将长表名(其中一些长达70个字符)转换为3-6个字符之类的短名称,以极大地提高脚本的可读性。

EN

回答 2

Stack Overflow用户

发布于 2018-04-18 18:13:08

Synonyms不是全局的,而是模式的一部分。它们指向由四部分组成的名称,即server-database-schema-object。因此,您可以为您的脚本创建一个新的数据库,并在其中创建同义词:

代码语言:javascript
复制
create database MyScriptDb;
create synonym tbl1 for realdb.dbo.VeryLongTableName;

只要没有其他脚本使用MyScryptDb,就很难看出它们会受到怎样的影响。

票数 0
EN

Stack Overflow用户

发布于 2018-04-18 18:15:41

这篇评论太长了。

一种可能性是在脚本的开头创建同义词,然后在所有退出路径上删除它们。也许这仍然是规则所不允许的。

但是,我不建议这样做。对象有名字是有原因的。如果您在脚本中重命名它们,那么突然之间,您的脚本就与其他脚本不同了--这是一个维护问题。

相反,我建议您为表提供标准缩写(我将使用与表名中每个单词的第一个字母相关的缩写)。在引用这些表的每个查询中,请使用表别名。然后,开始更改所有其他脚本以使用相同的别名。

不要无缘无故地使你的脚本与其他脚本不同。它们都是同一系统的一部分,随着时间的推移,应该使用相同的约定来实现可维护性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49896952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档