2014-11-04 164 views
0

我在相當泡菜,現在,基本上我試圖做一個插入到一箇中間表需要兩個ID,但我一個總是收到SQL異常:Insert語句衝突的外鍵約束

SQL Error: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_beca_seguridad_roles_usuarios_beca_seguridad_roles". The conflict occurred in database "beca_becademic", table "dbo.beca_seguridad_roles", column 'id_rol'.

現在,我不太熟悉SQL,數據庫是我的團隊成員之一,問題是他不能告訴我什麼是錯的,以及如何解決它。從這裏我瞥見其他問題,這裏的問題是dbo.beca_seguridad_roles表中沒有id_rol列的記錄。

問題是,以下FK_beca_seguridad_roles_usuarios_beca_seguridad_roles提及的是與此INSERT操作無關的表(usuarios)。

我希望有人能看到表格的代碼,並告訴我問題出在哪裏,所以我可以改變表格,我們在服務器管理上使用Azure,所以我不能訪問設計,上次我嘗試刪除一行代碼,使用這個表的整個節點往南走。

下面是表代碼:

CREATE TABLE [dbo].[beca_seguridad_roles](
    [id_rol] [int] IDENTITY(1,1) NOT NULL, 
    [nombre] [nvarchar](45) NOT NULL, 
    [descripcion] [nvarchar](max) NULL, 
    [intervencion] [int] NOT NULL, 
CONSTRAINT [PK_beca_seguridad_roles_id_rol] PRIMARY KEY CLUSTERED 
(
    [id_rol] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
) 

GO 

ALTER TABLE [dbo].[beca_seguridad_roles] WITH NOCHECK ADD CONSTRAINT [beca_seguridad_roles$fk_beca_seguridad_roles_beca_seguridad_intervenciones1] FOREIGN KEY([intervencion]) 
REFERENCES [dbo].[beca_seguridad_intervenciones] ([id_intervencion]) 
GO 

ALTER TABLE [dbo].[beca_seguridad_roles] CHECK CONSTRAINT [beca_seguridad_roles$fk_beca_seguridad_roles_beca_seguridad_intervenciones1] 
GO 

編輯:

萬一這裏是存儲過程我使用的是:

INSERT INTO dbo.beca_seguridad_permisos_de_roles (id_permiso, id_rol) 
VALUES (@id_permiso, @id_rol) 
+1

您在存儲過程中插入的值是否存在於表中? – SkelDave 2014-11-04 21:41:40

+0

@SkelDave,是的,他們這樣做。我已經手動檢查並在應用程序中使用msj框來仔細檢查它們是否是正確的值。 – 2014-11-04 21:48:16

+0

問題是,您正插入父表記錄不存在的表中。如果你認爲其他表是不相關的,YOu根本無法做到這一點,如果你認爲其他表是不相關的,那不是設計者,而是你應該不改變鍵。相反,修復你的插入,以便它獲得一個有價值的價值。可能你需要看看你插入東西的順序。你是如何得到你想要插入的價值的? – HLGEM 2014-11-04 21:50:08

回答

0

Fixe'd

我打電話給我的代碼插入一個非常相似但不同的名字的方法,錯誤與數據庫無關,非常感謝那些試圖幫助他們耐心和洞察力的人。

相關問題