Sysobjects中的xtype vs type列

时间:2010-11-30 10:26:23

标签: sql sql-server tsql

有人可以告诉我为什么Sysobjects表有两列xtypetype。两者都是数据类型char(2)并存储对象类型。

2 个答案:

答案 0 :(得分:2)

我认为应该使用type,因为它仍然在新视图中。 xtype用于向后兼容。

注:

sys.sysobjects似乎是removed in future versions,您应该使用sys.objects代替。

答案 1 :(得分:0)

您可以查看sysobjects

的定义
select OBJECT_DEFINITION(OBJECT_ID('sysobjects')) 
AS [processing-instruction(x)] FOR XML PATH('') 

哪个给出

CREATE VIEW sys.sysobjects AS
 SELECT  
 /*... Snip ...*/
 xtype = type collate database_default,
 /*... Snip ...*/
 type = convert(char(2), case type
  when 'UQ' then 'K' when 'PK' then 'K'
  else type collate database_default end),
 /*... Snip ...*/  
 FROM sys.sysschobjs

因此,它们似乎只是UQPK或显示为K不同。