1

嗨,伙计们,我一直在寻找和尝试关于我在 ms sql 2008 r2 中的两个表的解决方案,但我的表如下:

table 1
pk personid varchar - i manually insert here from GUID
fname varchar
mname varchar
lname varchar
qualifier varchar

table 2
pk id - increment by 1
fk personid varchar
salary int
deductions int
salary_month int
salary_year int

现在我的目标是知道哪些条目在另一张表上有外键,如果我不想删除它

我真的需要一些帮助我已经尝试了几个星期

4

2 回答 2

0

也许,你想要这个?

SELECT *
FROM table1 t1
WHERE NOT EXISTS (SELECT * FROM table2 t2 WHERE t2.personid=t1.personid)
于 2013-08-21T04:18:20.920 回答
-1

这是一个查询,它将为您提供数据库中存在的所有外键的列表。

select FK.name as [Foreign_Key_Name], T.name as [Referenced_Table], T2.name as [Parent_Table]
from sys.foreign_key_columns FKC
inner join sys.tables T on FKC.referenced_object_id = T.object_id
inner join sys.tables T2 on FKC.parent_object_id = T2.object_id
inner join sys.foreign_keys FK on FKC.constraint_object_id = FK.object_id

如果您有一些列用作外键,但数据库中没有实际的 FK 对象,那么您可以尝试这样的操作

select *
from table1 T1
inner join table2 T2 on T1.ColumnX = T2.ColumnY

如果查询返回的行数多于这两列可能是 FK 关系。

于 2013-08-21T14:52:05.120 回答