[英]SQL Server Management: The INSERT statement conflicted with the FOREIGN KEY constraint
[英]The insert statement conflicted with the foreign key constraint - SQL Server 2012
我有3個表:Application,Control和Application Control,這基本上是Application和Control之間的多對多關系。
應用表
App_ID int (PK)
.....
ApplicationControl表
FK_APP_ID int (PK)
FK_Controls_ID (PK)
和控制表
ID int (PK)
Name varchar(50)
App表和Control表都填充了一些條目。 當我嘗試在ApplicationControl表中插入一個條目(從App獲取ID和從Control獲取ID)時,它說:
The Insert statement conflicted with the FOREIGN KEY constraint
(between ApplicationControl and Control) The conflict occured in table Control,
column ID.
有什么想法嗎? 它可以插入應用程序ID,但不能插入控件ID,並且這兩個關系之間沒有任何區別。
USE [PicknickDB]
GO
/****** Object: Table [dbo].[ApplicationControl] Script Date: 7/10/2013 3:21:29 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ApplicationControl](
[FK_App_ID] [int] NOT NULL,
[FK_Controls_ID] [int] NOT NULL,
CONSTRAINT [PK_ApplicationControl] PRIMARY KEY CLUSTERED
(
[FK_App_ID] ASC,
[FK_Controls_ID] 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
ALTER TABLE [dbo].[ApplicationControl] WITH CHECK ADD CONSTRAINT [FK_MapAppControls_Applications] FOREIGN KEY([FK_App_ID])
REFERENCES [dbo].[Application] ([App_ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ApplicationControl] CHECK CONSTRAINT [FK_MapAppControls_Applications]
GO
ALTER TABLE [dbo].[ApplicationControl] WITH CHECK ADD CONSTRAINT [FK_MapAppControls_Controls] FOREIGN KEY([FK_App_ID])
REFERENCES [dbo].[Control] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ApplicationControl] CHECK CONSTRAINT [FK_MapAppControls_Controls]
GO
ALTER TABLE [dbo].[ApplicationControl] WITH CHECK ADD CONSTRAINT
[FK_MapAppControls_Controls] FOREIGN KEY([FK_App_ID]) --Really?
REFERENCES [dbo].[Control] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
那么, FK_App_ID
是否同時用作Application
和 Control
表的引用?
我建議應該改為FK_Controls_ID
。
在這種情況下,最好打開Profiler並確切查看它試圖插入的值。 這可能會導致了解為什么存在問題。 我最可能的猜測是,發送到第二張表的插入項的值為NULL,因為代碼忘記了對其進行設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.