Application、Control、Application Control の 3 つのテーブルがあります。これは、基本的に 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 を挿入することはできず、これら 2 つの関係に違いはありません。
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