gpt4 book ai didi

sql-server - 如何查找具有引用特定 table.column 的外键并且具有这些外键值的所有表?

转载 作者:行者123 更新时间:2023-12-02 00:33:36 26 4
gpt4 key购买 nike

我有一个表,其主键在其他几个表中作为外键引用。例如:

CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)

现在,我不知道数据库中有多少表包含 X 中的外键,例如表 Y 和 Z。是否有一个 SQL 查询可以用来返回: 1. 具有以下内容的表的列表外键插入 X AND 2. 哪些表的外键中实际有值?

最佳答案

尝试这个查询:

您必须使用sysreferencessysobjects表来获取信息

下面的查询给出了所有外键以及具有数据库中列名的父表

select cast(f.name as varchar(255)) as foreign_key_name
, cast(c.name as varchar(255)) as foreign_table
, cast(fc.name as varchar(255)) as foreign_column
, cast(p.name as varchar(255)) as parent_table
, cast(rc.name as varchar(255)) as parent_column
from sysobjects f
inner join sysobjects c on f.parent_obj = c.id
inner join sysreferences r on f.id = r.constid
inner join sysobjects p on r.rkeyid = p.id
inner join syscolumns rc on r.rkeyid = rc.id and r.rkey1 = rc.colid
inner join syscolumns fc on r.fkeyid = fc.id and r.fkey1 = fc.colid
where f.type = 'F'

关于sql-server - 如何查找具有引用特定 table.column 的外键并且具有这些外键值的所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com