我有這樣的問題:我有這個表,有5列:ID, Usuario_IdUsuario, Artista_IdArtista, Disco_IdDisco, Lista_IdLista
。最後4個是外鍵,最後2個允許空值,因爲在它們創建時,它們引用的表是空的。所以我插入Usuario_IdUsuario
和Artsita_IdArtista
,我得到以下信息:「INSERT語句衝突與外鍵約束」時插入爲NULL
INSERT語句衝突與外鍵約束「FK_Sigue_Lista」。衝突發生在數據庫「Tarea2」,表「dbo.Lista」,列'IdLista'。 該聲明已被終止。
但是該表是空的,並且沒有插入任何東西,因爲它允許空值。我已經檢查過,它沒有默認值。
注:這可能被視爲「重複」,但在以前的問題給出的答案不爲我工作,我不能發表評論我要問個究竟,如果不工作(默認值的東西)。
哪裏出現問題的插入代碼:
string insertQuery2 = "insert into Sigue (Usuario_IdUsuario, Artista_IdArtista) values (@usu, @Artista);"; //if I delete the ; inside the "", then it doesn't show any error messages, but it doesn't isert anything into the table either.
SqlCommand sig = new SqlCommand(insertQuery2, conn);
sig.Parameters.AddWithValue("@usu", idusu); //UserId taken from user table
sig.Parameters.AddWithValue("@Artista", idar); //ArtistId taken from artist table.
sig.ExecuteNonQuery();
我在做什麼錯?
(我用C#上的Visual Studio 2012的工作,並使用SQL Server 2012與管理工作室)
USE [Tarea2]
GO
/****** Object: Table [dbo].[Sigue] Script Date: 02-11-2014 20:32:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Sigue](
[IdSigue] [int] IDENTITY(1,1) NOT NULL,
[Usuario_IdUsuario] [int] NOT NULL,
[Artista_IdArtista] [int] NOT NULL,
[Disco_IdDisco] [int] NULL,
[Lista_IdLista] [int] NULL,
CONSTRAINT [PK_Sigue] PRIMARY KEY CLUSTERED
(
[IdSigue] 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].[Sigue] ADD CONSTRAINT [DF_Sigue_Disco_IdDisco] DEFAULT (NULL) FOR [Disco_IdDisco]
GO
ALTER TABLE [dbo].[Sigue] ADD CONSTRAINT [DF_Sigue_Lista_IdLista] DEFAULT (NULL) FOR [Lista_IdLista]
GO
ALTER TABLE [dbo].[Sigue] WITH CHECK ADD CONSTRAINT [FK_Sigue_Artista] FOREIGN KEY([Artista_IdArtista])
REFERENCES [dbo].[Artista] ([IdArtista])
GO
ALTER TABLE [dbo].[Sigue] CHECK CONSTRAINT [FK_Sigue_Artista]
GO
ALTER TABLE [dbo].[Sigue] WITH CHECK ADD CONSTRAINT [FK_Sigue_Disco] FOREIGN KEY([Disco_IdDisco])
REFERENCES [dbo].[Disco] ([IdDisco])
GO
ALTER TABLE [dbo].[Sigue] CHECK CONSTRAINT [FK_Sigue_Disco]
GO
ALTER TABLE [dbo].[Sigue] WITH CHECK ADD CONSTRAINT [FK_Sigue_Lista] FOREIGN KEY([Lista_IdLista])
REFERENCES [dbo].[Lista] ([IdLista])
GO
ALTER TABLE [dbo].[Sigue] CHECK CONSTRAINT [FK_Sigue_Lista]
GO
ALTER TABLE [dbo].[Sigue] WITH CHECK ADD CONSTRAINT [FK_Sigue_UserData] FOREIGN KEY([Usuario_IdUsuario])
REFERENCES [dbo].[UserData] ([Id])
GO
ALTER TABLE [dbo].[Sigue] CHECK CONSTRAINT [FK_Sigue_UserData]
GO
'null'不是一個有效的外鍵 - 什麼是不清楚錯誤信息? – 2014-11-02 19:18:38
@PrestonGuillot錯誤消息對'null'說了些什麼? – wolfgangwalther 2014-11-02 19:57:46
標題說該值爲空。該錯誤消息指示該值違反了外鍵約束。 – 2014-11-02 21:32:37