既想得到这么一张表:外键名称(PK) 主表 主表被参照列 子表 子表参照列please
解决方案 »
- 急求SQLSERVER2005开发版下载地址
- 关于backup的问题不明白。。。
- SQL中,另外程序在每30秒内更新一次所有数据,我想做一个网页,每5秒种来看一下所有数据,请问如何解决并发的问题?(注:无法控制更改的程序)
- powerdesigner导出的视图为什么有一部分的name和code列是灰色的,不可编辑
- 关于exists问题
- 紧急求助,查询语句
- 一对多关系表的整合??? 急!
- SQL Server 2000发生死锁,请教解决方法,急,多谢
- 电脑最近异常
- 紧急求救:考勤机下载的原始刷卡记录文本文件被加密,请各位想想办法?
- 哪位大侠给我讲讲时间戳的有关知识?
- 请问如何制作VFP下的封面,像Word的那种?
,object_name(fkeyid) as FKTABLE_NAME,COL_NAME(fkeyid,fkey) as FKCOLUMN_NAME
from dbo.sysforeignkeys order by constid,keyno
,o3.name as FKTABLE_NAME,c2.name as FKCOLUMN_NAME
from sysforeignkeys f
join sysobjects o1 on f.constid=o1.id
join sysobjects o2 on f.rkeyid=o2.id
join sysobjects o3 on f.fkeyid=o3.id
join syscolumns c1 on f.rkeyid=c1.id and f.rkey=c1.colid
join syscolumns c2 on f.fkeyid=c2.id and f.fkey=c2.colid
order by constid,keyno
sp_fkeys
返回当前环境的逻键外键信息。该过程显示各种外键关系,包括禁用的外键。 语法
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]参数
[@pktable_name =] 'pktable_name'是表的名称(该表带有主键),使用该表返回目录信息。pktable_name 的数据类型为 sysname,默认值为 NULL。不支持通配符模式匹配。必须提供这个参数或 fktable_name 参数,或者同时提供二者。[@pktable_owner =] 'pktable_owner'表所有者的名称(该表带有主键),使用该表返回目录信息。pktable_owner 的数据类型为 sysname,默认值为 NULL。不支持通配符模式匹配。如果没有指定 pktable_owner,则采用基础 DBMS 默认的表可视性规则。在 Microsoft® SQL Server™ 中,如果当前用户拥有的表具有指定名称,则返回该表的列。如果没有指定 pktable_owner,而且当前用户没有带有指定的 pktable_name 的表,那么该过程便查找数据库所有者所拥有的表,看看其中是否有某个表带有指定的 pktable_name。如果有,则返回该表的列。[@pktable_qualifier =] 'pktable_qualifier'是表限定符的名称(该表带有主键)。pktable_qualifier 的数据类型为 sysname,默认值为 NULL。多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。在 SQL Server 中,该限定符表示数据库名称。在某些产品中,该列表示表所在数据库环境的服务器名。[@fktable_name =] 'fktable_name'是表的名称(该表带有外键),使用该表返回目录信息。fktable_name 的数据类型为 sysname,默认值为 NULL。不支持通配符模式匹配。必须提供这个参数或 pktable_name 参数,或者同时提供二者。[@fktable_owner =] 'fktable_owner'是表所有者的名称(该表带有外键),使用该表返回目录信息。fktable_owner 的数据类型为 sysname,默认值为 NULL。不支持通配符模式匹配。如果没有指定 fktable_owner,则采用基础 DBMS 默认的表可视性规则。在 SQL Server 中,如果当前用户拥有一个带有指定名称的表,那么就返回该表的列。如果没有指定 fktable_owner,并且当前用户没有带有指定的 fktable_name 的表,那么该过程就查找数据库所有者所拥有的表,看看其中是否有某个表带有指定的 fktable_name。如果有,则返回该表的列。[@fktable_qualifier =] 'fktable_qualifier'是表限定符的名称(该表带有外键)。fktable_qualifier 的数据类型为 sysname,默认值为 NULL。在 SQL Server 中,该限定符表示数据库名称。在某些产品中,该列表示表所在数据库环境的服务器名。返回代码值
无结果集
列名 数据类型 描述
PKTABLE_QUALIFIER sysname 表限定符的名称(该表带有主键)。该字段可以为 NULL。
PKTABLE_OWNER sysname 表所有者的名称(该表带有主键)。该字段始终返回值。
PKTABLE_NAME sysname 表的名称(该表带有主键)。该字段始终返回值。
PKCOLUMN_NAME sysname 主键列的名称,针对返回的 TABLE_NAME 的每个列。该字段始终返回值。
FKTABLE_QUALIFIER sysname 表限定符的名称(该表带有外键)。该字段可以为 NULL。
FKTABLE_OWNER sysname 表所有者的名称(该表带有外键)。该字段始终返回值。
FKTABLE_NAME sysname 表的名称(该表带有外键)。该字段始终返回值。
FKCOLUMN_NAME varchar(32) 外键列的名称,针对返回的 TABLE_NAME 的每个列。该字段始终返回值。
KEY_SEQ smallint 多列主键中列的序列号。该字段始终返回值。
UPDATE_RULE smallint 当 SQL 操作是更新时,应用于外键的动作。SQL Server 为这些列返回 0 或 1。开放数据服务网关可返回值 0、1 或 2:
0= 对外键的 CASCADE 修改。
1= 如果有外键,那么进行 NO ACTION 修改。
2=SET_NULL;将外键设置为 NULL。
DELETE_RULE smallint 当 SQL 操作是删除时,应用于外键的动作。SQL Server 为这些列返回 0 或 1。开放数据服务网关可返回值 0、1 或 2:
0= 对外键的 CASCADE 修改。
1= 如果有外键,那么进行 NO ACTION 修改。
2=SET_NULL;将外键设置为 NULL。
FK_NAME sysname 外键标识符。如果对数据源不可用,则其为 NULL。SQL Server 返回 FOREIGN KEY 约束名。
PK_NAME sysname 主键标识符。如果对数据源不可用,则其为 NULL。SQL Server 返回 PRIMARY KEY 约束名。
返回的结果集按 FKTABLE_QUALIFIER、FKTABLE_OWNER、FKTABLE_NAME 及 KEY_SEQ 排序。注释
如果应用程序编码中包含某些表,而这些表带有禁用的外键,那么可以通过如下方法实现应用程序编码: 当使用这些表时,临时禁用限制检查(ALTER TABLE NOCHECK 或 CREATE TABLE NOT FOR REPLICATION),稍后再重新启用它。
使用触发器或应用程序代码强制实施关系。
如果提供了主键表名,而外键表名为 NULL,那么 sp_fkeys 将返回所有这样的表:该表包含指向给定的表的外键。如果提供了外键表名,而主键表名为 NULL,那么 sp_fkeys 将返回所有这样的表:该表通过主键/外键关系与外键表中的外键相关联。sp_fkeys 存储过程等价于 ODBC 中的 SQLForeignKeys。 权限
执行权限默认授予 public 角色。示例
下面的示例为 Northwind 数据库中的 Customers 表检索一个外键的列表。USE Northwind
EXEC sp_fkeys @pktable_name = N'Customers'
请参见sp_pkeys