Invalid object name 'I'.
Publicado por Regina (9 intervenciones) el 30/03/2007 17:35:42
hola tengo que generar un trigger que haga una auditoria sobre una tabla para que cuando se actualize registre en otra tabla los cambios realizados y envie un mail a determinados usuarios...
el trigger compila y corre pero al momento de querer comprobarlo con una actualización me marca el siguiente error :
(1 row(s) affected)
Server: Msg 208, Level 16, State 1, Procedure trg_u_tcad_Prueba, Line 38
Invalid object name 'I'.
NI SIQUIERA TENGO UN OBJETO "I" Y AUNQUE ME MARQUE QUE HAY UNA FILA AFECTADA NO ALMACENA NADA EN LA TABLA...
ALGUIEN ME PUEDE AYUDAR??
CREATE TRIGGER tgr_u_tcad_Prueba ON tcad_Prueba FOR UPDATE
AS
DECLARE @clave int
SET @clave = (select (claId) FROM Inserted)
DECLARE @RowCount int
SET @RowCount = @@RowCount
DECLARE @mensaje varchar(100)
SET @mensaje = ''
BEGIN
IF (SELECT COUNT (*)
FROM Inserted JOIN tcad_Prueba
ON Inserted.claId = tcad_Prueba.claId ) != @RowCount
BEGIN
IF ((SELECT (nombre) FROM Inserted) <> (SELECT (nombre) FROM tcad_Prueba ))
SET @mensaje = @mensaje+', '+'nombre'
IF ((SELECT (Apellidos) FROM Inserted) <> (SELECT (Apellidos) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'Apellidos'
IF ((SELECT (fechaNacimiento) FROM Inserted) <> (SELECT (fechaNacimiento) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'fechaNacimiento'
IF ((SELECT (ingresoMensual) FROM Inserted) <> (SELECT (ingresoMensual) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'ingresoMensual'
IF ((SELECT (Casado) FROM Inserted) <> (SELECT (Casado) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'Casado'
END
INSERT INTO tcad_Prueba
(
claId,
nombre,
Apellidos,
fechaNacimiento,
ingresoMensual,
Casado
)
SELECT
Inserted.claId,
Inserted.nombre,
Inserted.Apellidos,
Inserted.fechaNacimiento,
Inserted.ingresoMensual,
Inserted.Casado
FROM Inserted
INSERT INTO tcad_Modificados
(
cnsc_original,
fec_hora_modif,
tipo_modif,
colum_modif,
status_mail
)
VALUES
(
@clave,
getdate(),
'Actualización',
@mensaje,
0
)
EXEC master.dbo.xp_sendmail
@recipients = '[email protected]',
@subject = 'Email Automático',
@message = 'A la tabla se le ha actualizado un registro';
RETURN
END
ESTA ES LA RUTINA QUE UTILIZO PARA ACTUALIZAR UN REGISTRO
SET IDENTITY_INSERT tcad_Modificados ON
update tcad_Prueba
set nombre = 'Nuevo Nombre'
where claId = 1
SET IDENTITY_INSERT tcad_Modificados OFF
GRACIAS!!
el trigger compila y corre pero al momento de querer comprobarlo con una actualización me marca el siguiente error :
(1 row(s) affected)
Server: Msg 208, Level 16, State 1, Procedure trg_u_tcad_Prueba, Line 38
Invalid object name 'I'.
NI SIQUIERA TENGO UN OBJETO "I" Y AUNQUE ME MARQUE QUE HAY UNA FILA AFECTADA NO ALMACENA NADA EN LA TABLA...
ALGUIEN ME PUEDE AYUDAR??
CREATE TRIGGER tgr_u_tcad_Prueba ON tcad_Prueba FOR UPDATE
AS
DECLARE @clave int
SET @clave = (select (claId) FROM Inserted)
DECLARE @RowCount int
SET @RowCount = @@RowCount
DECLARE @mensaje varchar(100)
SET @mensaje = ''
BEGIN
IF (SELECT COUNT (*)
FROM Inserted JOIN tcad_Prueba
ON Inserted.claId = tcad_Prueba.claId ) != @RowCount
BEGIN
IF ((SELECT (nombre) FROM Inserted) <> (SELECT (nombre) FROM tcad_Prueba ))
SET @mensaje = @mensaje+', '+'nombre'
IF ((SELECT (Apellidos) FROM Inserted) <> (SELECT (Apellidos) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'Apellidos'
IF ((SELECT (fechaNacimiento) FROM Inserted) <> (SELECT (fechaNacimiento) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'fechaNacimiento'
IF ((SELECT (ingresoMensual) FROM Inserted) <> (SELECT (ingresoMensual) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'ingresoMensual'
IF ((SELECT (Casado) FROM Inserted) <> (SELECT (Casado) FROM tcad_Prueba))
SET @mensaje = @mensaje+', '+'Casado'
END
INSERT INTO tcad_Prueba
(
claId,
nombre,
Apellidos,
fechaNacimiento,
ingresoMensual,
Casado
)
SELECT
Inserted.claId,
Inserted.nombre,
Inserted.Apellidos,
Inserted.fechaNacimiento,
Inserted.ingresoMensual,
Inserted.Casado
FROM Inserted
INSERT INTO tcad_Modificados
(
cnsc_original,
fec_hora_modif,
tipo_modif,
colum_modif,
status_mail
)
VALUES
(
@clave,
getdate(),
'Actualización',
@mensaje,
0
)
EXEC master.dbo.xp_sendmail
@recipients = '[email protected]',
@subject = 'Email Automático',
@message = 'A la tabla se le ha actualizado un registro';
RETURN
END
ESTA ES LA RUTINA QUE UTILIZO PARA ACTUALIZAR UN REGISTRO
SET IDENTITY_INSERT tcad_Modificados ON
update tcad_Prueba
set nombre = 'Nuevo Nombre'
where claId = 1
SET IDENTITY_INSERT tcad_Modificados OFF
GRACIAS!!
Valora esta pregunta


0