insert语句与外键约束冲突-SQL Server 2012
我有3个表:Application、Control和applicationcontrol,这基本上是应用程序和控件之间的多对多关系 应用程序表insert语句与外键约束冲突-SQL Server 2012,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,我有3个表:Application、Control和applicationcontrol,这基本上是应用程序和控件之间的多对多关系 应用程序表 App_ID int (PK) ..... 应用程序控制表 FK_APP_ID int (PK) FK_Controls_ID (PK) ID int (PK) Name varchar(50) 和控制表 FK_APP_ID int (PK) FK_Controls_ID (PK) ID int (PK) Name varchar(50
App_ID int (PK)
.....
应用程序控制表
FK_APP_ID int (PK)
FK_Controls_ID (PK)
ID int (PK)
Name varchar(50)
和控制表
FK_APP_ID int (PK)
FK_Controls_ID (PK)
ID int (PK)
Name varchar(50)
应用程序表和控制表都填充了一些条目。当我尝试在ApplicationControl表中插入一个条目时(从应用程序获取一个id,从控件获取一个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
在这种情况下,最好打开探查器,查看它试图插入的值。这可能会导致了解问题的原因。我最可能的猜测是,发送给第二个表的insert的值为NULL,因为代码忘记在此处设置它 在这种情况下,最好打开探查器,查看它试图插入的值。这可能会导致了解问题的原因。我最可能的猜测是,发送给第二个表的insert的值为NULL,因为代码忘记在此处设置它
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
被用作应用程序和控件
表的引用
我建议改为FK\u Controls\u ID
因此,FK_App_ID
被用作应用程序和控件
表的引用
我建议改为FK\u ID
。您能发布您的实际DDL吗?例如,FK中可能有一个错误,例如引用了错误的表。从设计角度来看,它看起来很好,我有5个类似的表(多对多关系),插入可以正常工作。您可以发布实际的DDL吗?例如,FK中可能有一个错误,例如引用了错误的表。从设计角度来看,它看起来不错,我有5个类似的表(多对多关系),插入可以正常工作。