通过下列查询可得到关系的表名和列名
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/设置默认值)
强制外键约束的参数为是或否
强制用于复制的参数为是或否
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 ,主键列名=(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'