0

我继承了一个设计得不是很好的旧数据库。这是一个 Sql Server 2008 数据库,缺少很多外键关系。下面显示了两个表,我正在尝试在dbo.app_status.status_iddbo.app_additional_info.application_id之间手动创建 FK 关系

在此处输入图像描述

尝试使用以下查询创建关系时,我正在使用 SQL Server Management Studio

USE myDatabase; 
GO ALTER TABLE dbo.app_additional_info 
ADD CONSTRAINT FK_AddInfo_AppStatus FOREIGN KEY (application_id) 
    REFERENCES dbo.app_status (status_id) 
    ON DELETE CASCADE
    ON UPDATE CASCADE ; 
GO

但是,我在运行查询时收到此错误

ALTER TABLE 语句与 FOREIGN KEY 约束“FK_AddInfo_AppStatus”冲突。冲突发生在数据库“myDatabase”、表“dbo.app_status”、列“status_id”中。

我想知道查询是否因为每个表已经包含大约 130,000 条记录而失败?

请帮忙。

谢谢。

4

1 回答 1

2

发生错误是因为 in dbo.app_additional_info.application_IDthat is not in 中有一个值dbo.app_Status.Status_ID。除非命名约定严重混乱,否则您试图向不相关的列添加关系,为什么要application_ID引用status_ID

我希望这dbo.App_Additional_Info.Application_ID应该是引用dbo.Application.Application_ID(稍微猜测表名和列名)所以你会想要这个:

USE MyDatabase
GO
ALTER TABLE dbo.App_Additional_Info
ADD CONSTRAINT FK_App_Additional_Info_Application_ID (Application_ID)
    REFERENCES dbo.Application (Application_ID)
    ON DELETE CASCADE
    ON UPDATE CASCADE;
于 2012-10-26T09:54:39.110 回答