工作需要,要找出某表对应的主键,需要的结果也很简单,就是一列表名一列列名,但网上给出的语句都是一大坨,各种表连起来条件错综复杂。刚才查了一下联机帮助,找到个正好符合要求的视图,帖出来大家分享。IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(
ID1 INT
,ID2 INT
,VAL VARCHAR(50)
,CONSTRAINT PK_TB_ID1_ID2 PRIMARY KEY (ID1,ID2)
)SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='TB'
/*
TEST dbo PK_TB_ID1_ID2 TEST dbo TB ID1 1
TEST dbo PK_TB_ID1_ID2 TEST dbo TB ID2 2
*/

解决方案 »

  1.   

    这个不麻烦吧
    IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
    GO
    CREATE TABLE TB(
    ID1 INT
    ,ID2 INT
    ,VAL VARCHAR(50)
    ,CONSTRAINT PK_TB_ID1_ID2 PRIMARY KEY (ID1,ID2)
    )SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='TB'
    /*
    TEST dbo PK_TB_ID1_ID2 TEST dbo TB ID1 1
    TEST dbo PK_TB_ID1_ID2 TEST dbo TB ID2 2
    */SELECT COL.NAME,TYPES.NAME,COL.MAX_LENGTH
    FROM SYS.COLUMNS COL
    INNER JOIN SYS.types TYPES ON COL.SYSTEM_TYPE_ID=TYPES.SYSTEM_TYPE_ID 
    WHERE COL.OBJECT_ID=OBJECT_ID('TB')
    /*
    ID1 int 4
    ID2 int 4
    VAL varchar 50
    */
      

  2.   

    用sql server 2008的话有图形工具,可以将表选中,立马可以看出他们之间的关系