有时候需要清除一些数据,但是总会有一些外键关联多加阻拦,下面是一些外键关联查询,方便更快捷有效的查询到需要处理的外键信息。

一、外键信息

查询列从左到右分别是: 外键约束名,子表名,外键列名,父表名

 --外键信息
select fk.name fkname , ftable.name ftablename, cn.name fkcol, rtable.name ftablename,ObjectProperty(fk.id,'CnstIsUpdateCascade') updatCase,ObjectProperty(fk.id,'CnstIsDeleteCascade') deletCase from sysforeignkeys
join sysobjects fk
on sysforeignkeys.constid = fk.id
join sysobjects ftable
on sysforeignkeys.fkeyid = ftable.id
join sysobjects rtable
on sysforeignkeys.rkeyid = rtable.id
join syscolumns cn
on sysforeignkeys.fkeyid = cn.id and sysforeignkeys.fkey = cn.colid

二、外键被参考表

 1 --外键被参考表
2 SELECT 主键列ID=b.rkey
3 ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
4 ,外键表ID=b.fkeyid
5 ,外键表名称=object_name(b.fkeyid)
6 ,外键名称= c.name
7 ,外键列ID=b.fkey
8 ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
9 ,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade')
10 ,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade')
11 FROM sysobjects a
12 join sysforeignkeys b on a.id=b.constid
13 join sysobjects c on a.parent_obj=c.id
14 join syscolumns cn
15 on b.fkeyid = cn.id and b.fkey = cn.colid
16 where a.xtype='f' AND c.xtype='U'
17 and object_name(b.rkeyid)='dt_article'

三、外键详细信息

参考来源 http://technet.microsoft.com/zh-cn/library/ms190196(v=SQL.110).aspx

 1 --外键详细信息
2 SELECT
3 f.name AS foreign_key_name
4 ,OBJECT_NAME(f.parent_object_id) AS table_name
5 ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name
6 ,OBJECT_NAME (f.referenced_object_id) AS referenced_object
7 ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name
8 ,is_disabled
9 ,delete_referential_action_desc
10 ,update_referential_action_desc
11 FROM sys.foreign_keys AS f
12 INNER JOIN sys.foreign_key_columns AS fc
13 ON f.object_id = fc.constraint_object_id
14 WHERE f.parent_object_id = OBJECT_ID('test');

文章转载自:https://www.cnblogs.com/guanshan/p/guan131.html

SQLServer 查询所有外键关联表信息的更多相关文章

  1. SQLServer:查询所有外键关联表信息

     --从左到右分别是: 外键约束名,子表名,外键列名,父表名 --use demodtcms--外键信息select fk.name fkname , ftable.name ftablename, ...

  2. T-SQL中找出一个表的所有外键关联表

    二种方法(下例中表名为T_Work) 1.SQL查询系统表 SELECT 主键列ID=b.rkey ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.r ...

  3. sqlserver 数据库主外键关联错误

    话题引入: 在建立主外键关系时,系统提示表"table2"中的列与现有的主键或UNIQUE约束不匹配 原因: 数据库表中只有一个主键,这个主键可以是多个列共同组成.所以table2 ...

  4. mysql外键与表查询

    目录 自增特性 外键 外键关系 外键创建 外键的约束效果 级联更新级联删除 多对多关系 一对一关系 表查询关键字 select与from where筛选 group by分组 练习 关系练习 查询练习 ...

  5. pythonのsqlalchemy外键关联查询

    #!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...

  6. oracle查询某张表的外键,并用 truncate 命令有外键的表中的数据

    注:本文来源于<oracle查询某张表的外键(最终解决办法)> 一:几个查询表外键的脚本 select b.table_name, b.column_name from user_cons ...

  7. 通过SQL脚本来查询SQLServer 中主外键关系

    在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...

  8. oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息

    来源于网上整理 总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表select * fro ...

  9. Entity FrameWork对有外键关联的数据表的添加操作

    前天做了一个MVC Entity FrameWork项目,遇到有外键关联的数据编辑问题.当你编辑的时候,按照正常的逻辑,把每个字段的数据都对号入座了,然后点击保存按钮,本以为会顺理成章的编辑数据,但是 ...

  10. 基于EF的数据外键关联查询

    现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...

随机推荐

  1. Windows关闭网络防火墙教程

    Win10操作系统 1. 打开控制面板,点击"系统和安全" 2. 点击"Windows Defender 防火墙" 3. 点击"启用或关闭Window ...

  2. MassTransit | 基于StateMachine实现Saga编排式分布式事务

    什么是状态机 状态机作为一种程序开发范例,在实际的应用开发中有很多的应用场景,其中.NET 中的async/await 的核心底层实现就是基于状态机机制.状态机分为两种:有限状态机和无限状态机,本文介 ...

  3. [Leetcode]扁平化多级双向链表

    题目   https://leetcode-cn.com/explore/learn/card/linked-list/197/conclusion/764/ 代码 /* // Definition ...

  4. flutter 底部滑动导航,页面滑动同时让底部导航跟着变动,除了点击还可以滑动哦~~

    实现点击以及滑动都可以切换导航的效果 核心代码 完整代码 // 输入 imrm 快速生成下面 import 'package:flutter/material.dart'; import 'Home. ...

  5. 默认方法:and-默认方法:or

    默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Predicate条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用de ...

  6. java 入门与进阶P-6.3+P-6.4

    包裹类型 对于基本数据类型,Java提供了对应的包裹(wrap)类型.这些包裹类型将一个基本数据类型的数据转换成对象的形式,从而使得它们可以像对象一样参与运算和传递.下表列出了基本数据类型所对应的包裹 ...

  7. activemq插件在eos中的开发

    ActiceMQ-CPP消息插件是CMS的一种实现,是一个能够与ActiveMQ进行通信的C++客户端库,ActiveMQ-CPP的架构设计能够支持可插拨的传输协议和消息封装格式,并且支持客户端容量, ...

  8. C#如何提高代码质量(二)

    多线程,异步,任务和并行 1.异步和多线程应用场景区分 多线程 计算密集型工作 异步 IO密集型工作 2.线城同步中使用信号量 EventWaitHandle AutoResetEvent Manua ...

  9. QT 5 中文乱码,试试在PRO文件加入这几行代码

    msvc{ QMAKE_CFLAGS += /utf-8 QMAKE_CXXFLAGS += /utf-8 }

  10. Rust一些学习文档

    <Rust 烹饪书>https://llever.com/rust-cookbook-zh/intro.zh.html <Rust高级编程>https://learnku.co ...