微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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具有相同的两行,它们都包含相同的内容.

原文地址:https://www.jb51.cc/mssql/75774.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐