Hola Grupo,
Para resumir , tengo una tabla con (Actividades) y sus progresos (Avances)
con una clave primaria producto (Odt,CodigoProducto,Disciplina) ->
Progreso(Odt,CodigoProducto,Disciplina) como clave foranea.
De esta misma forma existe la misma relacion con otras tablas.
El asunto es que existe la posibilidad de actualizar alguna fila de la
tabla Producto (Incluyendo la clave Primaria) en algun momento en el tiempo.
y eso lo he querido hacer con un trigger y me genera un error (Error de
claves foraneas Producto -> Progreso).
Agradeceria cualquier ayuda.
Gracias
Este es mi Trigger:
ALTER TRIGGER triggerUpdateCodProducto
ON dbo.Producto
FOR UPDATE
AS
IF UPDATE (codProducto)
begin
update Producto
set CodProducto = inserted.CodProducto
from Producto, deleted, inserted
where deleted.odtId = Producto.odtId and
deleted.codProducto = Producto.codProducto and
deleted.disciplinaId <> Producto.disciplinaId
update Producto
set tipo = substring(inserted.CodProducto, 9, 1)
from Producto, inserted
where inserted.odtId = Producto.odtId and
inserted.codProducto = Producto.codProducto
update htDetalleNormal
set CodProducto = inserted.CodProducto
from htDetalleNormal, deleted, inserted
where deleted.odtId = htDetalleNormal.odtId and
deleted.CodProducto = htDetalleNormal.CodProducto
update htDetalleSt
set CodProducto = inserted.CodProducto
from htDetalleSt, deleted, inserted
where deleted.odtId = htDetalleSt.odtId and
deleted.codProducto = htDetalleSt.codProducto
update Progreso
set CodProducto = inserted.CodProducto
from Progreso, deleted, inserted
where deleted.odtId = Progreso.odtId and
deleted.CodProducto = Progreso.CodProducto and
deleted.DisciplinaId = Progreso.DisciplinaId
update ctrlImpProductoTecser
set productoId = inserted.codProducto
from ctrlImpProductoTecser, deleted, inserted
where deleted.odtId = ctrlImpProductoTecser.odtId and
deleted.CodProducto = ctrlImpProductoTecser.productoId and
deleted.DisciplinaId = ctrlImpProductoTecser.disciplina
update ctrlImpPotencialesImpresiones
set nombreArchivo = convert(char(4), inserted.odtId) + '-' +
inserted.codProducto
from ctrlImpProductoTecser, deleted, inserted
where deleted.odtId = ctrlImpPotencialesImpresiones.odtId and
ctrlImpPotencialesImpresiones.nombreArchivo = convert(char(4),
deleted.odtId) + '-' + deleted.codProducto
end
Leer las respuestas