對於sysconstraints裡的字段
status int 位图指示状态。可能的值包括: 
1 = PRIMARY KEY 约束。
2 = UNIQUE KEY 约束。
3 = FOREIGN KEY 约束。
4 = CHECK 约束。
5 = DEFAULT 约束。
16 = 列级约束。
32 = 表级约
--------------
我不懂“位圖指示狀態”是什麼意思,我想要查出一個表的key列,如果方便的話也要查出有外鍵約束的列以及相關引用的表與鍵

解决方案 »

  1.   

    SELECT TABLEID=F.ID,COLID=A.COLID,TNAME=F.NAME,
    TABLENAME= CASE A.COLID WHEN 1 THEN F.NAME ELSE '' END,
    COLNAME=A.NAME,XTYPE=A.XTYPE,TYPENAME=B.NAME,PKNAME=C.NAME,
    CONAME= CASE B.XTYPE WHEN 167 THEN B.NAME+'('+LTRIM(STR(A.LENGTH))+')'
    WHEN 108 THEN B.NAME+'('+LTRIM(STR(A.XPREC))+','+LTRIM(STR(A.XSCALE))+')' 
    ELSE B.NAME END,CANNULL= CASE A.ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END,
    ISKEY=CASE ISNULL(C.NAME,'') WHEN '' THEN 'NO' ELSE 'YES' END,A.ISCOMPUTED,
    COMPUTEDTEXT=D.TEXT,DEFAULTVALUE=E.TEXT
    FROM SYSCOLUMNS A 
    LEFT JOIN SYSTYPES B ON A.XTYPE=B.XTYPE
    LEFT JOIN SYSINDEXES C ON A.ID=C.ID AND  (C.STATUS & 64)=0 AND COLID=C.INDID
    LEFT JOIN SYSCOMMENTS D ON A.ID=D.ID AND D.NUMBER=A.COLID
    LEFT JOIN SYSCOMMENTS E ON E.ID=A.CDEFAULT
    LEFT JOIN SYSOBJECTS F ON A.ID=F.ID AND F.XTYPE='U'
    WHERE F.NAME='你的表格名'
    ORDER BY F.ID,A.COLID全在这里了,挑点出来就可以了.
      

  2.   

    呵呵,好啊 ̄!
    原來主鍵要這樣查的。LEFT JOIN SYSINDEXES C ON A.ID=C.ID AND  (C.STATUS & 64)=0 AND COLID=C.INDID,
    謝了