0

我在我的数据库中创建外键时遇到了一些麻烦。这是我的表格的解释模型:

笔记

 * (PK) NOTE_ID   BIGINT
 *      TITLE     VARCHAR(200)
 *      DATE      DATETIME
 *      SERIES_ID BIGINT

系列

 * (PK) SERIES_ID BIGINT
 *      TITLE     VARCHAR(200)
 *      DESCR     VARCHAR(1000)

我正在尝试在NOTESERIESby之间建立“有”关系SERIES_ID。我认为在两个表之间设置外键SERIES_ID是解决方案,但是当我尝试创建它时,出现以下错误:

错误:被引用的表“dbo.SERIES”中没有与外键“ FK_SERIES_NOTE ”中的引用列列表匹配的主键或候选键。无法创建约束

我正在使用我设置的 GoDaddy SQL Server 附带的 Web 数据库管理器,所以我不确定它尝试使用的底层查询是什么,或者我会发布它。

归根结底,这一切都是为了创建一个关系,以便我的 Note 对象的 NHibernate 映射将包含与 Series 对象的一对一关系。不过,我什至可能没有尝试用外键以正确的方式解决这个问题。

我会以正确的方式解决这个问题吗?

编辑: 为了尝试将表与更简单的示例配对,我删除了我认为是几个非关键列。但是,我最终留下了一个字段,该字段实际上是系列表上复合主键的一部分。所以,因为我试图将外键分配给复合键的一部分,所以不允许我这样做。

最后,我再次查看了我的表的结构,发现我实际上不需要复合键的另一部分 - 删除后,外键的分配现在工作得很好。

4

1 回答 1

0

If you can, you may try running the following statement in a query analyzer and see the resulting error message (I guess @Damien_The_Unbeliever is right ) :

ALTER TABLE NOTE ADD CONSTRAINT FK_SERIES_NOTE 
FOREIGN KEY (SERIES_ID) REFERENCES SERIES(SERIES_ID)
--ON DELETE CASCADE
-- uncomment the preceding line if you want a delete on a serie 
-- to automatically delete all notes on this serie

Hope this will help

于 2012-04-05T16:21:25.363 回答