我在SQL Server 2008中注意到sys.all_columns表包含自己的列。怎么可能?这似乎是一个鸡/蛋问题 - 如果没有先读取sys.all_columns,SQL Server如何确定sys.all_columns的列,这需要知道该表的列是什么?
另外,这是常见的吗?其他数据库系统是否这样做?
答案 0 :(得分:2)
sys.all_columns和sys.columns不是表,它们是视图。实际上,sys.all_columns是sys.system_columns和sys.columns的组合。
它们全部重新组合成一个基表,我非常确定微软更喜欢人们不要乱用。
您可以在此处了解有关系统基表的更多信息:https://msdn.microsoft.com/en-us/library/ms179503.aspx
答案 1 :(得分:0)
它可以运行初始查询,然后查询自己的新列并获取联合。实际上,初始查询本身描述了查询运行之前的列。这就是您无法使用未命名列定义视图的原因。