微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取SQLSERVER所有表的外键关系参数-MS-SQLServer/基础类

通过下列查询可得到关系的表名和列名
select object_name(A.parent_obj) as 表名 
 ,col_name(A.parent_obj,B.fkey) as 列名  
 ,object_name(B.rkeyid) as 引用表名 
 ,col_name(B.rkeyid,B.rkey) as 引用列名 
from sysobjects A 
join sysforeignkeys B on A.id=B.constid
我想知道更细的关系设置情况,如何用SELECT获取如下具体的参数:
INSERT 和 UPDATE 规范中的更新规则和删除规则参数(如:不执行任何操作/级联/设置 Null/设置认值)
强制外键约束的参数为是或否
强制用于复制的参数为是或否
------回答---------

------其他回答(5分)---------

sql code
    
    
-----------------查询一个表的所有外键 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)='tb'
------其他回答(15分)---------

所有表
sql code
    
    
SELECT 主表名=object_name(b.rkeyid),主键列ID=b.rkey,'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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐