sql – INFORMATION_SCHEMA.ROUTINES中SPECIFIC_SCHEMA和ROUTINE_SCHEMA之间有什么区别?

INFORMATION_SCHEMA.ROUTINES包含这两列:
SPECIFIC_SCHEMA: Specific name of the schema.
ROUTINE_SCHEMA: Name of the schema that contains this function.

technet doc

由于CATALOG和NAME的SPECIFIC_和ROUTINE_版本被定义为等效( – 目录的特定名称,该名称与ROUTINE_CATALOG.-)相同,但SCHEMA-

SPECIFIC_SCHEMA和ROUTINE_SCHEMA有什么区别?

解决方法

那有点像向后兼容性.

INFORMATION_SCHEMA本身仅用于更容易地迁移服务器版本和简化.我将提供基于sql Server的示例.

您可能希望(或可能需要)使用sys.objects表,它们基本上提供了几乎所有由INFORMATION_SCHEMA.ROUTINES传递的相同信息.实际上你需要使用它,如果你真的想知道一个程序的真正的模式名称 – 就像微软已经在自己的docs中所说的那样.但是如果你需要构建一个只需要一些基本信息的产品,如一个例程或者这样的东西,你不会去拿sys.objects它可能会从服务器版本更改为服务器版本.这使得它更难维护. INFORMATION_SCHEMA在许多版本上基本保持不变.只有微小的变化才会被应用,而视图下的工作将被微软所改变.这意味着您有一个稳定的代码多年和许多不同的服务器版本.

这可能是事实,有两列具有相同的定义,因此内容相同.它与SPECIFIC_NAME和ROUTINE_NAME或SPECIFIC_CATALOG和ROUTINE_CATALOG相同.他们基本上是一样的,正如微软自己在他们的文档中所说的那样.

它可能是一个遗物,可能永远呆在那里,只是为了兼容其他DBMS代码或旧版本的sql Server本身.

顺便说一句,Postgres具有相同的两行,它们都包含相同的内容.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03