Quelqu'un peut-il me dire pourquoi Sysobjects
table ont deux colonnes xtype
et type
. Les deux sont du type de données char(2)
et stocke le type d'objet.xtype vs type colonne dans Sysobjects
Répondre
Je crois que type
devrait être utilisé car il est encore dans la nouvelle vue. xtype
est là pour la rétrocompatibilité.
REMARQUE:
Il semble que sys.sysobjects
sera removed in future versions et vous devez utiliser sys.objects à la place.
J'utilise SQL Server 2005. Voulez-vous dire la colonne xtype n'était pas là dans SQL 2000. –
@Nadeem - J'ai eu une faute de frappe dans ma réponse originale et ils étaient dans le mauvais sens. 'xtype' existait dans SQL2K. 'type' sera utilisé à l'avenir. – codingbadger
Vous pouvez regarder la définition de sysobjects
select OBJECT_DEFINITION(OBJECT_ID('sysobjects'))
AS [processing-instruction(x)] FOR XML PATH('')
Ce qui donne
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
Il semble donc qu'ils ne diffèrent que si UQ
et PK
ou présentée comme K
ou non.
Les valeurs de certains types d'ocject diffèrent, par exemple, de la contrainte de clé primaire. –