在我的数据库中创建外键时遇到了一些麻烦。这是我的表格看起来的释义模型:
注意
* (PK) NOTE_ID BIGINT
* TITLE VARCHAR(200)
* DATE DATETIME
* SERIES_ID BIGINT
SERIES
* (PK) SERIES_ID BIGINT
* TITLE VARCHAR(200)
* DESCR VARCHAR(1000)
我想通过NOTE
在SERIES
和SERIES_ID
之间建立一个“拥有”关系。我认为在SERIES_ID
之间设置两个表之间的外键是解决方案,但是当我尝试创建它时,我收到以下错误:
错误:引用表'dbo.SERIES'中没有主键或候选键与引用列列表中的匹配 外键'FK_ SERIES _NOTE'。无法创建约束
我正在使用我设置的GoDaddy SQL Server附带的Web数据库管理器,因此我不确定它尝试使用的基础查询是什么,或者我会发布它。
在一天结束时,这就是创建一个关系,以便我的Note对象的NHibernate映射将包含与Series对象的一对一关系。不过,我甚至可能不会试图用外键来解决这个问题。
我是否以正确的方式解决这个问题?
修改 为了将表配对到一个更简单的示例,我删除了我认为是几个非关键列的内容。但是,我最终留下的字段实际上是系列表上复合主键的一部分。所以,因为我试图只将外键分配给复合键的一部分,所以不允许我这样做。
最后,我再看一下我的表的结构,发现我实际上并不需要复合键的另一部分 - 并且在删除之后,外键的分配现在很有效。 / p>
答案 0 :(得分:0)
如果可以,您可以尝试在查询分析器中运行以下语句,并查看生成的错误消息(我猜@Damien_The_Unbeliever是对的):
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
希望这会有所帮助