PDA

Ver la Versión Completa : Master - Detail 2


HectorMendez
30-04-2008, 21:30:15
Hace unos días hice una consulta con relacion a un inconveniente que estoy teniendo para manejar los Maestros Detalles con SQL Server.... (Master - Detail). Nuevamente hago otra consulta ya que todavia no he encontrado solucion a dicho problema....:(, pero ahora agreso lo siguiente:

Esto me ocurre cuando intento modificar el una tabla de SEGUROS, la cual tiene una relación con AFILIADOSXSEGUROS, y en cuya relación tiene la acción programada (Parent UpDate = CASCADE), es por eso que cuando intento modificar un dato del campo llave, se produce este error…


Cannot cascade AfiliadosXSeguros UPDATE because more then one row has been affected

Entonces si desactivo el trigger que realiza esta acción, entonces se produce esto otro ERROR…

Update failed. Found 0 records.
¿Por que ocurre el primer error?

El modelo de la base de datos fue creado en ERwin Data Modeler
Utilizo SQL Server 2000, Delphi 7, y un componente externo que se llama SDAC (SQL Server Data Access Ver 4.30.0.12)

Espero haber sido explisito..... si no me avisan para tratar de mejorar...

BlueSteel
30-04-2008, 21:34:42
Esto me ocurre cuando intento modificar el una tabla de SEGUROS, la cual tiene una relación con AFILIADOSXSEGUROS, y en cuya relación tiene la acción programada (Parent UpDate = CASCADE), es por eso que cuando intento modificar un dato del campo llave, se produce este error…


Cannot cascade AfiliadosXSeguros UPDATE because more then one row has been affected

Entonces si desactivo el trigger que realiza esta acción, entonces se produce esto otro ERROR…

Update failed. Found 0 records.
¿Por que ocurre el primer error?


Hola... y podrias colocar el código que utilizas para modificar... y de paso tambien el Trigger...

Salu2:p:D

HectorMendez
30-04-2008, 22:10:03
Este es el trigger..!!! que lo crea el ERwin mediante la relacion...!!!

create trigger tU_AfiliadosXSeguros on dbo.AfiliadosXSeguros for UPDATE as
/* ERwin Builtin Mon Oct 22 13:28:06 2007 */
/* UPDATE trigger on AfiliadosXSeguros */
begin
declare @numrows int,
@nullcnt int,
@validcnt int,
@insCodigoAseguradora int,
@insCarnetAfiliado varchar(15),
@errno int,
@errmsg varchar(255)
select @numrows = @@rowcount
/* ERwin Builtin Mon Oct 22 13:28:06 2007 */
/* AfiliadosXSeguros R/41 Recepcion ON PARENT UPDATE CASCADE */
if
/* update(CodigoAseguradora) or
update(CarnetAfiliado) */
update(CodigoAseguradora) or
update(CarnetAfiliado)
begin
if @numrows = 1
begin
select @insCodigoAseguradora = inserted.CodigoAseguradora,
@insCarnetAfiliado = inserted.CarnetAfiliado
from inserted
update Recepcion
set
/* Recepcion.CodigoAseguradora = @insCodigoAseguradora,
Recepcion.CarnetAfiliado = @insCarnetAfiliado */
Recepcion.CodigoAseguradora = @insCodigoAseguradora,
Recepcion.CarnetAfiliado = @insCarnetAfiliado
from Recepcion,inserted,deleted
where
/* Recepcion.CodigoAseguradora = deleted.CodigoAseguradora and
Recepcion.CarnetAfiliado = deleted.CarnetAfiliado */
Recepcion.CodigoAseguradora = deleted.CodigoAseguradora and
Recepcion.CarnetAfiliado = deleted.CarnetAfiliado
end
else
begin
select @errno = 30006,
@errmsg = 'Cannot cascade AfiliadosXSeguros UPDATE because more than one row has been affected.'
goto error
end
end

/* ERwin Builtin Mon Oct 22 13:28:06 2007 */
return
error:
raiserror @errno @errmsg
rollback transaction
end