ultima tabla actualizada

23/02/2004 - 10:24 por Jomaweb | Informe spam
Hola a todos:

Para realizar Auditoría y llevar un control de todos los eventos sobre la
base de datos.
Conozco las tablas temporales INSERTED y DELETED, pero necesito saber el
NOMBRE de la última tabla que ha sufrido una actualización, inserción o
eliminación de registros.

Evidentemente cogería los datos de inserted y deleted y el nombre de tabla
de donde me digáis.

Otra cuestión: ¿no existe una tabla updated?, porque necesito datos también
cuando se hace un update.

Cualquier bibliografía o enlace sobre SP o funciones del sistema será
eternamente agradecida.


Mil gracias

Preguntas similare

Leer las respuestas

#1 José Raúl Fenollar Martínez
23/02/2004 - 10:46 | Informe spam
Cuando se hace un Update, en la tabla deleted estan los datos originales
(anteriores al update) y en inserted los datos modificados (despues del
update).

por lo tanto solo comprobando si exiten registros en una o en otra tabla o
en las 2, puedes deducir la acció realizada.

Lo que no acabo de entender, es el tema de la última tabla actualizada. Los
triggers se lanzan por tabla, y por lo tanto en un trigger de una tabla,...
esa es la última tabla actualizada.

Saludos des Gandia


"Jomaweb" escribió en el mensaje
news:uHoOE7e%
Hola a todos:

Para realizar Auditoría y llevar un control de todos los eventos sobre la
base de datos.
Conozco las tablas temporales INSERTED y DELETED, pero necesito saber el
NOMBRE de la última tabla que ha sufrido una actualización, inserción o
eliminación de registros.

Evidentemente cogería los datos de inserted y deleted y el nombre de


tabla
de donde me digáis.

Otra cuestión: ¿no existe una tabla updated?, porque necesito datos


también
cuando se hace un update.

Cualquier bibliografía o enlace sobre SP o funciones del sistema será
eternamente agradecida.


Mil gracias




Respuesta Responder a este mensaje
#2 Jomaweb
23/02/2004 - 10:53 | Informe spam
El tema es que tengo un trigger en cada tabla que inserta en una tabla de
control cuando se hacen deletes o inserts.
Pero quiero saber si hay una función que me devuelva el nombre de la tabla
porque tengo la creación del trigger automatizado en un script, es decir, no
voy tabla por tabla creando el trigger sino que tengo un script que me coge
de sysobjects todas las tablas "U" y genera el trigger.

Por eso necesito saber el nombre de tabla que lanza el evento.



Lo que no acabo de entender, es el tema de la última tabla actualizada.


Los
triggers se lanzan por tabla, y por lo tanto en un trigger de una


tabla,...
esa es la última tabla actualizada.

Saludos des Gandia
Respuesta Responder a este mensaje
#3 Miguel Egea
23/02/2004 - 11:16 | Informe spam
Buenas, juraría que hay un metodo más sencillo, pero ahora mismo soy incapaz
de recordarlo. Así que he preparado un pequeño script que hace lo que pides.
Igual lo publico en portalsql.com como un tip.

use tempdb
go
drop table tabla
go
create table tabla(id int identity(1,1) primary key)
go
create trigger trg_tabla on tabla after insert,update,delete
as
begin
select object_name((select parent_obj from sysobjects where id=@@procid))
end

go
insert into tabla default values



Saludos

Miguel Egea
Microsoft SQL-SERVER MVP
Brigada Anti-Cursores
"Jomaweb" escribió en el mensaje
news:#LXKaLf#
El tema es que tengo un trigger en cada tabla que inserta en una tabla de
control cuando se hacen deletes o inserts.
Pero quiero saber si hay una función que me devuelva el nombre de la tabla
porque tengo la creación del trigger automatizado en un script, es decir,


no
voy tabla por tabla creando el trigger sino que tengo un script que me


coge
de sysobjects todas las tablas "U" y genera el trigger.

Por eso necesito saber el nombre de tabla que lanza el evento.



> Lo que no acabo de entender, es el tema de la última tabla actualizada.
Los
> triggers se lanzan por tabla, y por lo tanto en un trigger de una
tabla,...
> esa es la última tabla actualizada.
>
> Saludos des Gandia


Respuesta Responder a este mensaje
#4 Jomaweb
23/02/2004 - 11:34 | Informe spam
Efectivamente tiene que haber una función sencilla que devuelva el nombre de
la tabla.

Algo parecido al Select IDENT_CURRENT pero con la tabla.


"Miguel Egea" escribió en el mensaje
news:%23r9J9Xf%
Buenas, juraría que hay un metodo más sencillo, pero ahora mismo soy


incapaz
de recordarlo. Así que he preparado un pequeño script que hace lo que


pides.
Igual lo publico en portalsql.com como un tip.

use tempdb
go
drop table tabla
go
create table tabla(id int identity(1,1) primary key)
go
create trigger trg_tabla on tabla after insert,update,delete
as
begin
select object_name((select parent_obj from sysobjects where id=@@procid))
end

go
insert into tabla default values



Saludos

Miguel Egea
Microsoft SQL-SERVER MVP
Brigada Anti-Cursores
"Jomaweb" escribió en el mensaje
news:#LXKaLf#
> El tema es que tengo un trigger en cada tabla que inserta en una tabla


de
> control cuando se hacen deletes o inserts.
> Pero quiero saber si hay una función que me devuelva el nombre de la


tabla
> porque tengo la creación del trigger automatizado en un script, es


decir,
no
> voy tabla por tabla creando el trigger sino que tengo un script que me
coge
> de sysobjects todas las tablas "U" y genera el trigger.
>
> Por eso necesito saber el nombre de tabla que lanza el evento.
>
>
>
> > Lo que no acabo de entender, es el tema de la última tabla


actualizada.
> Los
> > triggers se lanzan por tabla, y por lo tanto en un trigger de una
> tabla,...
> > esa es la última tabla actualizada.
> >
> > Saludos des Gandia
>
>


Respuesta Responder a este mensaje
#5 José Raúl Fenollar Martínez
23/02/2004 - 11:51 | Informe spam
De todas formas, de la forma que lo generas, puedes recoger en el momento de
generar el trigger, el nombre de la tabla del campo name de sysobjects, y
ponerlo dentro del trigger como una constante, evitando acceder a funciones
u otras formas que enlentezcan tu porceso de auditoria.




"Jomaweb" escribió en el mensaje
news:%23LXKaLf%
El tema es que tengo un trigger en cada tabla que inserta en una tabla de
control cuando se hacen deletes o inserts.
Pero quiero saber si hay una función que me devuelva el nombre de la tabla
porque tengo la creación del trigger automatizado en un script, es decir,


no
voy tabla por tabla creando el trigger sino que tengo un script que me


coge
de sysobjects todas las tablas "U" y genera el trigger.

Por eso necesito saber el nombre de tabla que lanza el evento.



> Lo que no acabo de entender, es el tema de la última tabla actualizada.
Los
> triggers se lanzan por tabla, y por lo tanto en un trigger de una
tabla,...
> esa es la última tabla actualizada.
>
> Saludos des Gandia


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida