Insert语句冲突的外键约束

问题描述:

我在相当泡菜,现在,基本上我试图做一个插入到一个中间表需要两个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

Fixe'd

我打电话给我的代码插入一个非常相似但不同的名字的方法,错误与数据库无关,非常感谢那些试图帮助他们耐心和洞察力的人。