sql - 与 FOREIGN KEY 约束冲突

标签 sql sql-server

我有两张 table

学术界:

CREATE TABLE [dbo].[R_ACADEMIE](
    [ID_ACADEMIE] [dbo].[IDENTIFIANT] NOT NULL,
    [LC_ACADEMIE_CODE] [dbo].[LIBELLE_COURT] NOT NULL,
    [LM_ACADEMIE_LIBELLE] [dbo].[LIBELLE_MOYEN] NOT NULL,
 CONSTRAINT [PK_R_ACADEMIE] PRIMARY KEY NONCLUSTERED 
(
    [ID_ACADEMIE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

我在 E_VOYAGEUR 表中添加了我的列

ALTER TABLE E_VOYAGEUR ADD ID_ACADEMIE IDENTIFIANT NOT NULL DEFAULT 0;

我想在我的 E_VOYAGEUR 表上创建一个 FK,我这样做:

ALTER TABLE [dbo].[E_VOYAGEUR]  WITH CHECK ADD  CONSTRAINT [FK_E_VOYAGE_A_VOYAGEU_E_ACADEMIE] FOREIGN KEY([ID_ACADEMIE])
REFERENCES [dbo].[R_ACADEMIE] ([ID_ACADEMIE])
GO

我遇到此错误:

The ALTER TABLE statement is in conflict with the FOREIGN KEY constraint " FK_E_VOYAGE_A_VOYAGEU_E_ACADEMIE " . The conflict occurred in database " DEV ", " dbo.R_ACADEMIE " table, column ' ID_ACADEMIE ' .

最佳答案

似乎您的表 E_VOYAGEUR 已经有一些值,并且您正在更改该表以添加新列 ID_ACADEMIE,默认值为 0。 这使得表 E_VOYAGEUR 中的所有行的列 ID_ACADEMIE 的值为 0。当您使用外键约束添加到该表(引用表)时,[R_ACADEMIE] 在 ID_ACADEMIE 列中可能没有值为“0”的条目,这似乎是此问题的原因。

在将外键添加到表 E_VOYAGEUR 之前,请确保 ID_ACADEMIE 列中的值在表 [R_ACADEMIE] 中有引用。

关于sql - 与 FOREIGN KEY 约束冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39020048/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 拥有超过 2 个 child 的 parent

c# - SqlQuery 上的 Entity Framework 超时

sql-server - 如何将 DT_R8 存储在 SSIS 中的变量中

sql - SQL Server 2008 查询中的 XML 数据类型

sql-server-2005 - 有关SQL语法: *=的问题

sql-server - 从 SQL Server Express R2 在 Eclipse 中进行 hibernate 逆向工程

mysql - 访问mysql数据库控制面板

空列上的android sqlite索引

sql - 如何编写T-SQL STRING_AGG 函数