4

我在 SQL Server 2008 中注意到 sys.all_columns 表包含自己的列。这怎么可能?这似乎是一个先有鸡还是先有蛋的问题——SQL Server 如何在不首先读取 sys.all_columns 的情况下确定 sys.all_columns 的列,这需要知道该表的列是什么?

另外,这很常见吗?其他数据库系统会这样做吗?

4

2 回答 2

3

sys.all_columns 和 sys.columns 不是表,它们是视图。实际上,sys.all_columns 是 sys.system_columns 和 sys.columns 的组合。

它们都与一个基表相关联,我很确定微软更喜欢人们不要乱来。

您可以在此处了解有关系统基表的更多信息:https ://msdn.microsoft.com/en-us/library/ms179503.aspx

于 2015-03-11T13:17:13.257 回答
0

它可以运行初始查询,然后向自身查询新列并采用联合。但实际上,初始查询本身描述了查询运行之前的列。这就是为什么您不能定义具有未命名列的视图的原因。

于 2015-03-11T13:01:35.853 回答