简体   繁体   English

如何检查特定的列引用父表

[英]How to check a particular column references parent table

I have a child table say B which references to some parent table say A . 我有一个子表说B ,它引用了一些父表说A Now, suppose i have 3 coulmns in table B (example: B1, B2,B3 ). 现在,假设我在表B中有3个同语(例如: B1, B2,B3 )。 I wrote a query to get all the constraints in table B which is as follows: 我写了一个查询来获取表B中的所有约束,如下所示:

SELECT a.table_name, 
       a.column_name
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C  
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME 
  and a.table_name='B'
  and C.CONSTRAINT_TYPE = 'C'

Result: 结果:

Table Name Column Name
B          B1

Now i want to know that column B1 references to which parent table along with the column name too. 现在,我想知道B1列也引用了哪个父表以及列名

I just happened to have this query lying around: 我只是碰巧有这个查询:

SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
Constraint_Name = C.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
SELECT i1.TABLE_NAME, i2.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'FOREIGN KEY'
) PT ON PT.TABLE_NAME = PK.TABLE_NAME
---- optional:
ORDER BY
1,2,3,4

It should do what you want. 它应该做您想要的。

Try following sqls: 尝试使用以下sqls:

Get all child tables and columns by parent, 按父获取所有子表和列,

SELECT distinct confk.constraint_name,
  confk.constraint_type,
  confk.table_name child_table,
  fkcon.column_name child_column,
  conpk.table_name parent_table,
  pkcon.column_name parent_column
FROM dba_constraints confk,
  dba_constraints conpk,
  dba_cons_columns pkcon,
  dba_cons_columns fkcon
WHERE confk.r_constraint_name = conpk.constraint_name
AND conpk.constraint_name     = pkcon.constraint_name
AND confk.constraint_name     = fkcon.constraint_name
AND confk.constraint_type     = 'R'
AND pkcon.owner               = 'Your schema name'
AND pkcon.table_name          ='your parent table name'
AND pkcon.column_name         ='your parent column name';

Get the parent table name and column by child name and column, 通过子名称和列获取父表名称和列,

SELECT distinct confk.constraint_name,
  confk.constraint_type,
  confk.table_name child_table,
  fkcon.column_name child_column,
  conpk.table_name parent_table,
  pkcon.column_name parent_column
FROM dba_constraints confk,
  dba_constraints conpk,
  dba_cons_columns pkcon,
  dba_cons_columns fkcon
WHERE confk.r_constraint_name = conpk.constraint_name
AND conpk.constraint_name     = pkcon.constraint_name
AND confk.constraint_name     = fkcon.constraint_name
AND confk.constraint_type     = 'R'
AND fkcon.owner               = 'Your schema name'
AND fkcon.table_name          ='your child table name'
AND fkcon.column_name         ='your child column name';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何检查表是否包含特定的列? - How to check whether the table contains a particular column or not? SQL检查子表行是否与特定列的父表行具有相同的值 - SQL check if child table rows have the same value as the parent table row for a particular column 检查同一表中对唯一列的约束引用 - Check constraint references to unique column in the same table SQL:检查表是否在特定列中不包含任何空值 - SQL: check if a table contains no nulls in a particular column 如何从投影中的表引用中消除 PostgreSQL 列引用的歧义? - How to disambiguate PostgreSQL column references from table references in projections? 如何检查特定属性的元素是否存在于列中? - How to check if the element of a particular attribute exists in a column? 如何检查TOAST是否正在postgres中的特定表上工作 - How to check if TOAST is working on a particular table in postgres 如何检查子表是否包含特定记录 - How to check if a child table contains a particular record 如何使用对父表的引用来规范表之间的关系 - How to normalize relationships between tables with references to a parent table 如何替换sqlserver中表上特定列中的文本 - how to replace text in a particular column on a table in sqlserver
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM