根据主键表名,外键表名能查出外键名和外键列名吗?
如果能,SQL语句怎么写

解决方案 »

  1.   

    查询一个表的所有外键
    SELECT 主键列ID=b.rkey 
        ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) 
        ,外键表ID=b.fkeyid 
        ,外键表名称=object_name(b.fkeyid) 
        ,外键列ID=b.fkey 
        ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) 
        ,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade') 
        ,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade') 
    FROM sysobjects a 
        join sysforeignkeys b on a.id=b.constid 
        join sysobjects c on a.parent_obj=c.id 
    where a.xtype='f' AND c.xtype='U' 
        and object_name(b.rkeyid)='titles'
      

  2.   

    SP_FKEYS TBNAME
    --
    sysforeignkeys
      

  3.   

    查询一个表的所有外键
    SELECT 主键列ID=b.rkey 
        ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) 
        ,外键表ID=b.fkeyid 
        ,外键表名称=object_name(b.fkeyid) 
        ,外键列ID=b.fkey 
        ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) 
        ,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade') 
        ,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade') 
    FROM sysobjects a 
        join sysforeignkeys b on a.id=b.constid 
        join sysobjects c on a.parent_obj=c.id 
    where a.xtype='f' AND c.xtype='U' 
        and object_name(b.rkeyid)='titles'
      

  4.   

    http://topic.csdn.net/u/20110927/15/18ec5b54-367f-4e21-9942-129cf5938561.html
      

  5.   

    select  
     object_name(fkeyid) [主表],
        c.name,
     object_name(rkeyid) [外表],
        d.name  
    from 
     sysforeignkeys a , 
     sysobjects b,
     syscolumns c,
     syscolumns d
    where 
     a.rkeyid = b.parent_obj 
     and fkeyid = c.id  
        and rkeyid = d.id
     and fkey = c.colid and rkey = d.colid
     and b.xtype = 'PK'
     and a.fkeyid = object_id('DM_DeliveryOrder')