2010-11-30 20 views
1

誰能告訴我爲什麼Sysobjects表有兩列xtypetype。兩者都是數據類型char(2)並存儲對象類型。xtype vs類型列在Sysobjects

+1

某些ocject類型的值例如主鍵約束不同。 – 2010-11-30 10:33:36

回答

2

我認爲應該使用type,因爲它仍然處於新視圖中。 xtype是爲了向後兼容。

注:

看來,sys.sysobjectsremoved in future versions,你應該使用sys.objects代替。

+0

我正在使用SQL Server 2005.你的意思是在SQL 2000中不存在列xtype。 – 2010-11-30 10:35:48

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或沒有差異。