Modificacion en Cascada

13/01/2004 - 15:46 por Pablo Salazar | Informe spam
El dia de ayer coloque un post donde explicaba que me daba error al
modificar el campo producto ( llave primaria de la tabla Productos ), ya que
no me efectuaba la modificacion en cascada, agradezco los comentarios y
estoy consiente de que una llave primaria no se deberia cambiar ( como dijo
maxi ya hay documentos con ese codigo), pero en algun momento puede
darse(aunque no es correcto) y en mi caso se dio.
Solucione el problema de la siguiente forma : en una de las tablas que
estaba relacionada con la tabla producto, tenia un trigger que se activa con
"Update", le quite por un momento ese trigger y todo funciono.
Ahora me queda otra duda: por ejemplo si se tiene un trigger update en una
tabla y modificas un registro ese trigger se activa y todo trabaja de
maravilla pero si modificas en conjunto por medio de un update da error.
Alguien me puede decir porque sucede esto?

Por sus comentarios Gracias.

Pablo Salazar.

Preguntas similare

Leer las respuestas

#6 Maximiliano D. A.
13/01/2004 - 17:30 | Informe spam
perdon se me olvido algo

IF EXISTS(
SELECT modificar FROM tPermisos
WHERE Usuario=@U and modificar=0)
IF EXISTS(
SELECT tTrans.Fecha,
datediff(hh,tTrans.Fecha,getdate()),
getdate()-tTrans.Fecha as F
FROM tTrans, tParámetros,inserted
WHERE tTrans.IDTrans=inserted.idtrans
AND datediff(hh,tTrans.Fecha,getdate())>tParámetros.HorasModificar
)



Salu2
Maximiliano Damian Accotto


"Pablo Salazar" escribió en el mensaje
news:OR5lR%
El triger que les mando se activa cuando se modifica un registro de la


tabla
ttrans( esta tabla tiene un campo producto)
Cuando modifico un producto en la tabla Producto se produce la
actualizacion en cascada y modifica monton de registros en la tabla ttrans


y
se activa este trigger.


CREATE Trigger tTransDetalle_Modificar
On dbo.tTransDetalle
/*No permite modificar tTransDetalle si Fecha es anterior a
tParámetros.HorasModificar
y no tiene permiso para modificar (tPermisos.Modificar)*/
For Insert, Update, Delete
As

DECLARE @U varchar(100)
DECLARE @IDTrans bigint
SELECT @U=SUBSTRING(system_user,CHARINDEX('\',system_user)+1,99)
IF EXISTS( SELECT * FROM Inserted)
SELECT @IDTrans=IDTrans FROM Inserted
ELSE
SELECT @IDTrans=IDTrans FROM Deleted

IF EXISTS(
SELECT modificar FROM tPermisos
WHERE Usuario=@U and modificar=0)
IF EXISTS(
SELECT tTrans.Fecha,
datediff(hh,tTrans.Fecha,getdate()),
getdate()-tTrans.Fecha as F
FROM tTrans, tParámetros
WHERE tTrans.IDTrans=@IDTrans
AND datediff(hh,tTrans.Fecha,getdate())>tParámetros.HorasModificar
)
BEGIN
ROLLBACK TRAN
RAISERROR 50000 'No es posible modificar!'
END





Gracias.


Respuesta Responder a este mensaje
#7 Pablo Salazar
13/01/2004 - 17:37 | Informe spam
Gracias a todos.
Voy a leer los articulos que me indicaron y les cuento como modifique el
trigger..

Pablo Salazar.
Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida