Principales respuestas
Instrucción INSERT en conflicto con la restricción FOREIGN KEY

Pregunta
-
Tengo un procedimiento almacenado que me insert en 3 tablas, pero me sale este error al ejecutarlo, la pregunta es como evitar este conflicto con los id's de las tablas:
////////////////////////////////////////////////////////////////////////////
ALTER PROCEDURE [dbo].[GuardarContratoFacturaDetalle]
--DATOS DE CONTRATO
@IdFactura int,
@NumContrato int,
@InicialPrima float,
@LugarRealizarPago varchar(10),
@NumCuotas int,
@FormaPago varchar(10),
@FechaEntrega datetime,
@LugarEntrega varchar(10),
-- DATOS DE FACTURA
@IdUsuario int,
@IdCliente int,
@NumFactura int,
@Iva float,
@Fecha datetime,
--DATOS DE DETALLE DE FACTURA
@IdProducto int,
@Cantidad int,
@Monto float,
@Descuento float
AS
BEGIN
INSERT INTO CONTRATO
VALUES (@IdFactura,@NumContrato,@InicialPrima,@LugarRealizarPago,@NumCuotas,@FormaPago,@FechaEntrega,@LugarEntrega)
INSERT INTO FACTURA
VALUES (@IdUsuario,@IdCliente,@NumFactura,@Iva,@Fecha)
INSERT INTO Detalle_Factura
VALUES (@IdFactura,@IdProducto,@Cantidad,@Monto,@Descuento)
END
RETURN 0////////////////////////////////////////////////////////////////////////////////////// Les agradeceria que me ayuden
Respuestas
-
la pregunta es como evitar este conflicto con los id's de las tablas
- Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de 2017 15:58
- Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de 2017 16:47
-
Si, perfectamente, pero como te mencionaba al inicio, debes invertir el orden de inserción y de esta forma solventaras el problema.
"Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net
- Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de 2017 16:47
-
Te agradezco hermano, Así lo haré... Saludos
- Marcado como respuesta Ramiro Castañeda domingo, 3 de diciembre de 2017 22:15
Todas las respuestas
-
Tengo un procedimiento almacenado que me insert en 3 tablas, pero me sale este error al ejecutarlo, la pregunta es como evitar este conflicto con los id's de las tablas:
////////////////////////////////////////////////////////////////////////////
ALTER PROCEDURE [dbo].[GuardarContratoFacturaDetalle]
--DATOS DE CONTRATO
@IdFactura int,
@NumContrato int,
@InicialPrima float,
@LugarRealizarPago varchar(10),
@NumCuotas int,
@FormaPago varchar(10),
@FechaEntrega datetime,
@LugarEntrega varchar(10),
-- DATOS DE FACTURA
@IdUsuario int,
@IdCliente int,
@NumFactura int,
@Iva float,
@Fecha datetime,
--DATOS DE DETALLE DE FACTURA
@IdProducto int,
@Cantidad int,
@Monto float,
@Descuento float
AS
BEGIN
INSERT INTO CONTRATO
VALUES (@IdFactura,@NumContrato,@InicialPrima,@LugarRealizarPago,@NumCuotas,@FormaPago,@FechaEntrega,@LugarEntrega)
INSERT INTO FACTURA
VALUES (@IdUsuario,@IdCliente,@NumFactura,@Iva,@Fecha)
INSERT INTO Detalle_Factura
VALUES (@IdFactura,@IdProducto,@Cantidad,@Monto,@Descuento)
END
RETURN 0////////////////////////////////////////////////////////////////////////////////////// Les agradeceria que me ayuden
- Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de 2017 15:58
-
Básicamente ese mensaje de error indica que se esta intentando insertar una fila dentro de una tabla que posee una restricción del tipo Foreign Key, aunque no posteas las estructuras de tus tables (incluyendo las restricciones de tipo FK y PK), pero viendo el código que estas posteando asumo que el problema es que estas intentando insertar una fila en la tabla CONTRATO la cuál incluye un @IdFactura que posiblemente no existe, puesto que el registro en la tabla FACTURA es insertado después del intento de inserción en la tabla CONTRATO, invierte el orden y realiza la inserción de la fila CONTRATO al final.
"Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net
-
-
la pregunta es como evitar este conflicto con los id's de las tablas
- Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de 2017 15:58
- Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de 2017 16:47
-
-
-
Si, perfectamente, pero como te mencionaba al inicio, debes invertir el orden de inserción y de esta forma solventaras el problema.
"Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net
- Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de 2017 16:47
-
Te agradezco hermano, Así lo haré... Saludos
- Marcado como respuesta Ramiro Castañeda domingo, 3 de diciembre de 2017 22:15