gpt4 book ai didi

sql - 外键引用 SQL Server 中的 2 列主键

转载 作者:行者123 更新时间:2023-12-03 08:54:08 31 4
gpt4 key购买 nike

这个问题与 this one 非常相似,但对于 SQL Server 2005 :

我的数据库中有 2 个表:

--'#' denotes the primary key
[Libraries]
#ID #Application Name
1 MyApp Title 1
2 MyApp Title 2


[Content]
#ID Application LibraryID Content
10 MyApp 1 xxx
11 MyApp 1 yyy

(数据库显然要复杂得多,拥有这个双键是有道理的)

每个库都由其唯一 ID 和应用程序名称标识。我试图确保每个内容都正确地引用了现有的库。

创建约束时(使用向导)作为
Primary key table            Foreign key table
[Libraries] [Content]
ID ---> LibraryID
Application ---> Application

我有以下错误:

The columns in table 'Libraries' do not match an existing primary key or UNIQUE constraint



你知道发生了什么吗?如果有可能使用 SQL Server? (我根本无法修改 [Library] 表)

非常感谢你的帮助!

最佳答案

当然,可以创建与复合(多列)主键的外键关系。你没有向我们展示你用来尝试建立这种关系的语句 - 它应该是这样的:

ALTER TABLE dbo.Content
ADD CONSTRAINT FK_Content_Libraries
FOREIGN KEY(LibraryID, Application)
REFERENCES dbo.Libraries(ID, Application)

你用的是那个??如 (ID, Application)确实是 dbo.Libraries 上的主键,这个语句绝对有效。

Luk:只是为了检查 - 你能在你的数据库中运行这个语句并报告输出是什么吗?
SELECT
tc.TABLE_NAME,
tc.CONSTRAINT_NAME,
ccu.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu
ON ccu.TABLE_NAME = tc.TABLE_NAME AND ccu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
WHERE
tc.TABLE_NAME IN ('Libraries', 'Content')

关于sql - 外键引用 SQL Server 中的 2 列主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178709/

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