sysobjects.type and xtype

  • Is there a reason sysobjects has the two type columns ? As far as I can see they contain identical values except that the K for Key in type is sub-divided in xtype into PK(primary key) and UQ(unique contraint). So why retain the type column?

    One theory I had was it retained for backwards compatibility with 6 db's.

  • I agree that the reason for having two such columns is probably backwards compatibility. But there anther question puzzling me. Why have certain (system)tables the type U, like sysmergearticles or all the conflict tables in merge replication. Of course they get created through a user action, but as soon as you try to make any modifications you're told it's a system table.

    So there must be another column value which differentiates system tables from user tables.

    But which ??? Any ideas ???

  • Actually type is a calculated column which the def is

    (convert(char(2),case when (([xtype] = 'UQ' or [xtype] = 'PK')) then 'K' else [xtype] end))

    Seems to be for compatibility.

    And as for system tables there is a mask to the status that was applied. If the value is less than 0 (or -xxx) it is considered masked as a system table. "dtproperties" is marked as 'u' as well.

    Edited by - antares686 on 02/07/2003 03:38:07 AM

  • Thanks Antares, however, I never posted that question, so there probable is some kind of linking problem in the mechanism that links names to posts. Anyway, Peace.

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply