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)
答
Fixe'd
我打电话给我的代码插入一个非常相似但不同的名字的方法,错误与数据库无关,非常感谢那些试图帮助他们耐心和洞察力的人。
您在存储过程中插入的值是否存在于表中? – SkelDave 2014-11-04 21:41:40
@SkelDave,是的,他们这样做。我已经手动检查并在应用程序中使用msj框来仔细检查它们是否是正确的值。 – 2014-11-04 21:48:16
问题是,您正插入父表记录不存在的表中。如果你认为其他表是不相关的,YOu根本无法做到这一点,如果你认为其他表是不相关的,那不是设计者,而是你应该不改变键。相反,修复你的插入,以便它获得一个有价值的价值。可能你需要看看你插入东西的顺序。你是如何得到你想要插入的价值的? – HLGEM 2014-11-04 21:50:08