Principales respuestas
CONSULTA SOBRE MERGE

Pregunta
-
AL realizar el siguiente código :
Set @IdFisico = (SELECT MAX(IdFisico) From Inventario.tbInventarioFisicoDetalle
where IdCompania = @IdCompania AND IdLocal = @IdLocal)
MERGE Inventario.tbInventarioFisicoDetalle AS T
USING Inventario.TbItemLocal AS S ON (T.IdCompania = S.IdCompania AND T.IdLocal = S.IdLocal AND T.IdItem = S.IdItem )
WHEN MATCHED
THEN UPDATE SET T.Actual = S.Saldo
WHEN NOT MATCHED BY TARGET
THEN INSERT(IdCompania, IdLocal, IdFisico,IdItem, Actual, Fisico, Migrado)
Me da el siguiente error:
The MERGE statement conflicted with the FOREIGN KEY constraint "FK_tbInventarioFisicoDetalle_tbInventarioFisico". The conflict occurred in database "ANDINA", table "Inventario.tbInventarioFisico".
Me indica FOREIGN KEY, La Tabla Inventario.tbInventarioFisicoDetalle y la tabla Inventario.TbItemLocal se relacionan por IdCompania, Idlocal y el IdItem
y solo deseo actualizar el campo Actual que se encuentra en la tabla de InventarioFisicoDetalle pero con el valor del campo Saldo de la tabla de tbItemLocal
ESpero me halla podido explicar.
Espero me ayuden...
Respuestas
-
hola buen día amigo...
si solo quieres actualizar y no insertar, en tu MERGE INTO estás especificando WHEN NOT MATCHED BY TARGET THEN INSERT, quitale eso.
MERGE Inventario.tbInventarioFisicoDetalle AS T USING Inventario.TbItemLocal AS S ON (T.IdCompania = S.IdCompania AND T.IdLocal = S.IdLocal AND T.IdItem = S.IdItem ) WHEN MATCHED THEN UPDATE SET T.Actual = S.Saldo
SALUDOS, prueba a ver que tal funciona...
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 8 de septiembre de 2012 8:44
- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 8 de septiembre de 2012 8:44
Todas las respuestas
-
hola buen día amigo...
si solo quieres actualizar y no insertar, en tu MERGE INTO estás especificando WHEN NOT MATCHED BY TARGET THEN INSERT, quitale eso.
MERGE Inventario.tbInventarioFisicoDetalle AS T USING Inventario.TbItemLocal AS S ON (T.IdCompania = S.IdCompania AND T.IdLocal = S.IdLocal AND T.IdItem = S.IdItem ) WHEN MATCHED THEN UPDATE SET T.Actual = S.Saldo
SALUDOS, prueba a ver que tal funciona...
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 8 de septiembre de 2012 8:44
- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 8 de septiembre de 2012 8:44
-
-
Aa ok, entonces el problema es que tu tabla Inventario.tbInventarioFisicoDetalle ( que es tu tabla donde quieres insertar si no existe y actualizar si existe ), tiene una llave foránea relacionada a la tabla Inventario.tbInventarioFisico en la cual, el campo que quieres insertar en la primera y por el que se relacionan, no existe en está ultima por eso te está marcando ese error, quiero suponer que es tu campo IdFisico por la lógica de los nombres... Por lo que puedo percibir es un error de integridad de datos....Espero te sirva de ayuda y no haberte enredado más :S.
- Editado Sergio S Arias miércoles, 5 de septiembre de 2012 17:17
-
-