sql - 尝试将外键添加到现有表时出现模糊错误
问题描述
我需要在我的表中添加一个新的外键,名为starList
. 它目前与名为 的表没有外键关系planetList
。
所以我运行了这个命令:
ALTER TABLE [dbo].[starList] WITH CHECK
ADD CONSTRAINT [FK_starList_planetList]
FOREIGN KEY([planetId]) REFERENCES [dbo].[planetList] ([planetId])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
但我得到这个错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_starList_planetList”冲突。
冲突发生在数据库“astro101”、表“dbo.planetList”、列“planetID”中。
我不确定那是什么意思。
我尝试在 SQL Server 上查看我的表,但没有发现任何问题。
谁能帮我弄清楚错误的含义?
谢谢!
我的starList
表如下所示:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[starList]
(
[starID] [nvarchar](50) NOT NULL,
[galaxyID] [uniqueidentifier] NOT NULL,
[starTitle] [nvarchar](3000) NULL,
[planetID] [uniqueidentifier] NULL,
CONSTRAINT [PK_StarList]
PRIMARY KEY CLUSTERED ([starID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[starList] WITH CHECK
ADD CONSTRAINT [FK_starList_galaxyList]
FOREIGN KEY([galaxyID]) REFERENCES [dbo].[galaxyList] ([galaxyID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[starList] CHECK CONSTRAINT [FK_starList_galaxyList]
GO
planetList
表格是这样的:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[planetList]
(
[planetID] [uniqueidentifier] NOT NULL,
[planetText] [nvarchar](max) NULL,
PRIMARY KEY CLUSTERED ([planetID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
解决方案
您需要检查两列中的数据。
外键表的列中有一个值,其关联值在主键表中不存在。
您在starlist.planetid 中有与planetlist.planetid 不匹配/对应的数据。
它们都需要与 values 值相同。最好将它们截断,然后尝试创建约束。
简而言之,违反了参照完整性规则。
如果是这种情况,请记住在填充表之前创建外键。
推荐阅读
- android - Android Activity 引用在内存不足时为空
- intellij-idea - 从 IDE 中启动文件
- php - 我在apache中配置了Configure SSL,后来通过下面链接中的步骤安装了mysql,php,之后尝试打开php时出现错误
- android - 从 Cursor 读取时出现 IndexOutOfBoundException
- kubernetes - 在 Kubernetes 中更新 Kafka 会导致停机
- asp.net-web-api - ASP.NET Web Api 属性路由和查询字符串
- java - Spring Service 垃圾回收
- python - 如何在 Python 套接字中接收和组装可变长度的字节数组?
- sip - 在 Ubuntu Pjsip PJproject 上配置//make 错误
- angular - Angular Nativescript 无法在惰性模块中导航