Ayuda con Trigger de Actualizacion

05/11/2003 - 17:20 por ByLoCK | Informe spam
Hola a todos,

Acabo de descubrir este grupo de noticias y me venis de perlas. A ver si
alguien me puede echar una manilla con el problema.

El caso es que quiero crear un trigger de actualizacion sobre una tabla.

Esta tabla es de lo mas sencilla

supongamos:

id int
nombre nvarchar(50)
fecha datetime

Lo que quiero es crear un trigger que al actualizar un registro de esa
tabla (supongamos el nombre), automaticamente se me actualice el
contenido de la fecha a la fecha actual (getdate()).

Mas concretamente, necesitaría poder obtener los campos del registro que
estoy actualizando al igual que puedo obtener los campos de un registro
recien insertado o borrado con las tablas inserted y deleted. NECESITO
una tabla UPDATED o algo así.

Muchas gracias

ByLoCK

Preguntas similare

Leer las respuestas

#6 ByLoCK
06/11/2003 - 12:59 | Informe spam
Muchas gracias a todos


En principio me quedo con la formalización del trigger, ya que con la
actualización ya lo tenemos controlado, pero el problema venia cuando
alguien modificaba la base de datos directamente.

Insisto, muchas gracias a todos.

"Hilario" wrote in
news::

Totalmente de acuerdo con que tu propuesta es mucho mas óptima.

El tema es que he supuesto que ByLoCK quería una funcionalidad similar
a la que necesitamos en mi empresa que consiste en mantener siempre en
todas las tablas la última fecha en la que se ha actualizado cualquier
campo de cada tabla. En nuestro caso nos sirve simplemente para
comprobar si ha habido escrituras en una fila en el intervalo desde
que un usuario la lee y al de un rato la actualiza en un entorno
multiusuario.

Saludos.

Hilario.

"Liliana Sorrentino" wrote in message
news:
Hola Hilario,
No puedo objetar nada en cuanto a la funcionalidad del trigger, pero
me parece que una actualización tan simple como la que plantea
nuestro compañero no necesita del mismo.
Te sugeriría revisar el plan de ejecución de ambas propuestas (la
tuya y


la
mía) y seguimos conversando sobre el tema si te parece.
Saludos... Liliana.

"Hilario Barrenkua" escribió en el mensaje
news:#
> Hola
>
> así lo hacemos nosotros:
>
> CREATE TRIGGER ACT1_TG_INSUPD ON dbo.ACT1
> FOR INSERT, UPDATE
> AS
> UPDATE ACT1
> SET FECACT=GETDATE()
> FROM ACT1 A
> INNER JOIN INSERTED I
> ON A.ID = I.ID
>
> Espero que te sirva.
>
>
>
>
> "ByLoCK" wrote in message
> news:
> > Hola a todos,
> >
> > Acabo de descubrir este grupo de noticias y me venis de perlas. A
> > ver


si
> > alguien me puede echar una manilla con el problema.
> >
> > El caso es que quiero crear un trigger de actualizacion sobre una


tabla.
> >
> > Esta tabla es de lo mas sencilla
> >
> > supongamos:
> >
> > id int
> > nombre nvarchar(50)
> > fecha datetime
> >
> > Lo que quiero es crear un trigger que al actualizar un registro
> > de esa tabla (supongamos el nombre), automaticamente se me
> > actualice el contenido de la fecha a la fecha actual (getdate()).
> >
> > Mas concretamente, necesitaría poder obtener los campos del
> > registro


que
> > estoy actualizando al igual que puedo obtener los campos de un


registro
> > recien insertado o borrado con las tablas inserted y deleted.
> > NECESITO una tabla UPDATED o algo así.
> >
> > Muchas gracias
> >
> > ByLoCK
>
>






Respuesta Responder a este mensaje
#7 Liliana Sorrentino
06/11/2003 - 15:32 | Informe spam
¡¡¡¿¿¿Modificar la base DIRECTAMENTE???!!! Supongo que estarás hablando de
un entorno de prueba al que solo vos podés acceder, ¿no?
Porque de no ser así, necesitarás algo más que actualizar la fecha, yo no
dudaría en grabar una auditoría o bitácora.
Saludos... Liliana.

"ByLoCK" escribió en el mensaje
news:
Muchas gracias a todos


En principio me quedo con la formalización del trigger, ya que con la
actualización ya lo tenemos controlado, pero el problema venia cuando
alguien modificaba la base de datos directamente.

Insisto, muchas gracias a todos.

"Hilario" wrote in
news::

> Totalmente de acuerdo con que tu propuesta es mucho mas óptima.
>
> El tema es que he supuesto que ByLoCK quería una funcionalidad similar
> a la que necesitamos en mi empresa que consiste en mantener siempre en
> todas las tablas la última fecha en la que se ha actualizado cualquier
> campo de cada tabla. En nuestro caso nos sirve simplemente para
> comprobar si ha habido escrituras en una fila en el intervalo desde
> que un usuario la lee y al de un rato la actualiza en un entorno
> multiusuario.
>
> Saludos.
>
> Hilario.
>
> "Liliana Sorrentino" wrote in message
> news:
>> Hola Hilario,
>> No puedo objetar nada en cuanto a la funcionalidad del trigger, pero
>> me parece que una actualización tan simple como la que plantea
>> nuestro compañero no necesita del mismo.
>> Te sugeriría revisar el plan de ejecución de ambas propuestas (la
>> tuya y
> la
>> mía) y seguimos conversando sobre el tema si te parece.
>> Saludos... Liliana.
>>
>> "Hilario Barrenkua" escribió en el mensaje
>> news:#
>> > Hola
>> >
>> > así lo hacemos nosotros:
>> >
>> > CREATE TRIGGER ACT1_TG_INSUPD ON dbo.ACT1
>> > FOR INSERT, UPDATE
>> > AS
>> > UPDATE ACT1
>> > SET FECACT=GETDATE()
>> > FROM ACT1 A
>> > INNER JOIN INSERTED I
>> > ON A.ID = I.ID
>> >
>> > Espero que te sirva.
>> >
>> >
>> >
>> >
>> > "ByLoCK" wrote in message
>> > news:
>> > > Hola a todos,
>> > >
>> > > Acabo de descubrir este grupo de noticias y me venis de perlas. A
>> > > ver
> si
>> > > alguien me puede echar una manilla con el problema.
>> > >
>> > > El caso es que quiero crear un trigger de actualizacion sobre una
> tabla.
>> > >
>> > > Esta tabla es de lo mas sencilla
>> > >
>> > > supongamos:
>> > >
>> > > id int
>> > > nombre nvarchar(50)
>> > > fecha datetime
>> > >
>> > > Lo que quiero es crear un trigger que al actualizar un registro
>> > > de esa tabla (supongamos el nombre), automaticamente se me
>> > > actualice el contenido de la fecha a la fecha actual (getdate()).
>> > >
>> > > Mas concretamente, necesitaría poder obtener los campos del
>> > > registro
> que
>> > > estoy actualizando al igual que puedo obtener los campos de un
> registro
>> > > recien insertado o borrado con las tablas inserted y deleted.
>> > > NECESITO una tabla UPDATED o algo así.
>> > >
>> > > Muchas gracias
>> > >
>> > > ByLoCK
>> >
>> >
>>
>>
>
>

Respuesta Responder a este mensaje
#8 Accotto Maximiliano D.
06/11/2003 - 15:36 | Informe spam
Solo un aporte!! si lo q se quiere es auditar con la fecha de actualizacion
no hariamos mucho q digamos no?

Lo idea seria quizas tener una tabla de auditoria donde no solo se grabe la
fecha sino por ej tambien:

EL usuario, el valor q habia en un campo y el nuevo (si esto es critico no).

Ojo con todos estos triggers de auditorias!! no es la panacea se paga con
rendimiento!! hay q ser equitativos a la hora de tomar una determinacion asi
porque puede hacer poner un sistema no solo inestable sino transformarlo en
uno de bajo rendimiento y q los usuarios se empiecen a quejar por ello,l
necesitar mas Fierros,etc.

Un saludo

Accotto Maximiliano Damian
"Liliana Sorrentino" escribió en el mensaje
news:
¡¡¡¿¿¿Modificar la base DIRECTAMENTE???!!! Supongo que estarás hablando de
un entorno de prueba al que solo vos podés acceder, ¿no?
Porque de no ser así, necesitarás algo más que actualizar la fecha, yo no
dudaría en grabar una auditoría o bitácora.
Saludos... Liliana.

"ByLoCK" escribió en el mensaje
news:
> Muchas gracias a todos
>
>
> En principio me quedo con la formalización del trigger, ya que con la
> actualización ya lo tenemos controlado, pero el problema venia cuando
> alguien modificaba la base de datos directamente.
>
> Insisto, muchas gracias a todos.
>
> "Hilario" wrote in
> news::
>
> > Totalmente de acuerdo con que tu propuesta es mucho mas óptima.
> >
> > El tema es que he supuesto que ByLoCK quería una funcionalidad similar
> > a la que necesitamos en mi empresa que consiste en mantener siempre en
> > todas las tablas la última fecha en la que se ha actualizado cualquier
> > campo de cada tabla. En nuestro caso nos sirve simplemente para
> > comprobar si ha habido escrituras en una fila en el intervalo desde
> > que un usuario la lee y al de un rato la actualiza en un entorno
> > multiusuario.
> >
> > Saludos.
> >
> > Hilario.
> >
> > "Liliana Sorrentino" wrote in message
> > news:
> >> Hola Hilario,
> >> No puedo objetar nada en cuanto a la funcionalidad del trigger, pero
> >> me parece que una actualización tan simple como la que plantea
> >> nuestro compañero no necesita del mismo.
> >> Te sugeriría revisar el plan de ejecución de ambas propuestas (la
> >> tuya y
> > la
> >> mía) y seguimos conversando sobre el tema si te parece.
> >> Saludos... Liliana.
> >>
> >> "Hilario Barrenkua" escribió en el mensaje
> >> news:#
> >> > Hola
> >> >
> >> > así lo hacemos nosotros:
> >> >
> >> > CREATE TRIGGER ACT1_TG_INSUPD ON dbo.ACT1
> >> > FOR INSERT, UPDATE
> >> > AS
> >> > UPDATE ACT1
> >> > SET FECACT=GETDATE()
> >> > FROM ACT1 A
> >> > INNER JOIN INSERTED I
> >> > ON A.ID = I.ID
> >> >
> >> > Espero que te sirva.
> >> >
> >> >
> >> >
> >> >
> >> > "ByLoCK" wrote in message
> >> > news:
> >> > > Hola a todos,
> >> > >
> >> > > Acabo de descubrir este grupo de noticias y me venis de perlas. A
> >> > > ver
> > si
> >> > > alguien me puede echar una manilla con el problema.
> >> > >
> >> > > El caso es que quiero crear un trigger de actualizacion sobre una
> > tabla.
> >> > >
> >> > > Esta tabla es de lo mas sencilla
> >> > >
> >> > > supongamos:
> >> > >
> >> > > id int
> >> > > nombre nvarchar(50)
> >> > > fecha datetime
> >> > >
> >> > > Lo que quiero es crear un trigger que al actualizar un registro
> >> > > de esa tabla (supongamos el nombre), automaticamente se me
> >> > > actualice el contenido de la fecha a la fecha actual (getdate()).
> >> > >
> >> > > Mas concretamente, necesitaría poder obtener los campos del
> >> > > registro
> > que
> >> > > estoy actualizando al igual que puedo obtener los campos de un
> > registro
> >> > > recien insertado o borrado con las tablas inserted y deleted.
> >> > > NECESITO una tabla UPDATED o algo así.
> >> > >
> >> > > Muchas gracias
> >> > >
> >> > > ByLoCK
> >> >
> >> >
> >>
> >>
> >
> >
>


Respuesta Responder a este mensaje
#9 Liliana Sorrentino
06/11/2003 - 15:53 | Informe spam
Probablemente mi respuesta fue demasiado breve.
En general cuando hablamos de auditoría nos referimos justamente a eso,
tener todos los datos posibles del responsable del cambio, datos anteriores
y nuevos, si se hace desde la aplicación o no, etc.
Con respecto a las contras que mencionás, no he tenido ningún problema de
ese tipo en procesos en producción con muchas estaciones de trabajo y tablas
importantes, y a la hora de buscar explicación a "cambios extraños" fue la
herramienta que nos dio la respuesta.

Por lo que ByLoCK plantea no creo que sea su caso, de todas maneras es
importante que expongamos nuestra experiencia y el interesado pueda evaluar
las opciones disponibles según sus necesidades.

Saludos... Liliana.

"Accotto Maximiliano D." escribió en el
mensaje news:eyiW#
Solo un aporte!! si lo q se quiere es auditar con la fecha de


actualizacion
no hariamos mucho q digamos no?

Lo idea seria quizas tener una tabla de auditoria donde no solo se grabe


la
fecha sino por ej tambien:

EL usuario, el valor q habia en un campo y el nuevo (si esto es critico


no).

Ojo con todos estos triggers de auditorias!! no es la panacea se paga con
rendimiento!! hay q ser equitativos a la hora de tomar una determinacion


asi
porque puede hacer poner un sistema no solo inestable sino transformarlo


en
uno de bajo rendimiento y q los usuarios se empiecen a quejar por ello,l
necesitar mas Fierros,etc.

Un saludo

Accotto Maximiliano Damian
"Liliana Sorrentino" escribió en el


mensaje
news:
> ¡¡¡¿¿¿Modificar la base DIRECTAMENTE???!!! Supongo que estarás hablando


de
> un entorno de prueba al que solo vos podés acceder, ¿no?
> Porque de no ser así, necesitarás algo más que actualizar la fecha, yo


no
> dudaría en grabar una auditoría o bitácora.
> Saludos... Liliana.
>
> "ByLoCK" escribió en el mensaje
> news:
> > Muchas gracias a todos
> >
> >
> > En principio me quedo con la formalización del trigger, ya que con la
> > actualización ya lo tenemos controlado, pero el problema venia cuando
> > alguien modificaba la base de datos directamente.
> >
> > Insisto, muchas gracias a todos.
> >
> > "Hilario" wrote in
> > news::
> >
> > > Totalmente de acuerdo con que tu propuesta es mucho mas óptima.
> > >
> > > El tema es que he supuesto que ByLoCK quería una funcionalidad


similar
> > > a la que necesitamos en mi empresa que consiste en mantener siempre


en
> > > todas las tablas la última fecha en la que se ha actualizado


cualquier
> > > campo de cada tabla. En nuestro caso nos sirve simplemente para
> > > comprobar si ha habido escrituras en una fila en el intervalo desde
> > > que un usuario la lee y al de un rato la actualiza en un entorno
> > > multiusuario.
> > >
> > > Saludos.
> > >
> > > Hilario.
> > >
> > > "Liliana Sorrentino" wrote in


message
> > > news:
> > >> Hola Hilario,
> > >> No puedo objetar nada en cuanto a la funcionalidad del trigger,


pero
> > >> me parece que una actualización tan simple como la que plantea
> > >> nuestro compañero no necesita del mismo.
> > >> Te sugeriría revisar el plan de ejecución de ambas propuestas (la
> > >> tuya y
> > > la
> > >> mía) y seguimos conversando sobre el tema si te parece.
> > >> Saludos... Liliana.
> > >>
> > >> "Hilario Barrenkua" escribió en el mensaje
> > >> news:#
> > >> > Hola
> > >> >
> > >> > así lo hacemos nosotros:
> > >> >
> > >> > CREATE TRIGGER ACT1_TG_INSUPD ON dbo.ACT1
> > >> > FOR INSERT, UPDATE
> > >> > AS
> > >> > UPDATE ACT1
> > >> > SET FECACT=GETDATE()
> > >> > FROM ACT1 A
> > >> > INNER JOIN INSERTED I
> > >> > ON A.ID = I.ID
> > >> >
> > >> > Espero que te sirva.
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > "ByLoCK" wrote in message
> > >> > news:
> > >> > > Hola a todos,
> > >> > >
> > >> > > Acabo de descubrir este grupo de noticias y me venis de perlas.


A
> > >> > > ver
> > > si
> > >> > > alguien me puede echar una manilla con el problema.
> > >> > >
> > >> > > El caso es que quiero crear un trigger de actualizacion sobre


una
> > > tabla.
> > >> > >
> > >> > > Esta tabla es de lo mas sencilla
> > >> > >
> > >> > > supongamos:
> > >> > >
> > >> > > id int
> > >> > > nombre nvarchar(50)
> > >> > > fecha datetime
> > >> > >
> > >> > > Lo que quiero es crear un trigger que al actualizar un registro
> > >> > > de esa tabla (supongamos el nombre), automaticamente se me
> > >> > > actualice el contenido de la fecha a la fecha actual


(getdate()).
> > >> > >
> > >> > > Mas concretamente, necesitaría poder obtener los campos del
> > >> > > registro
> > > que
> > >> > > estoy actualizando al igual que puedo obtener los campos de un
> > > registro
> > >> > > recien insertado o borrado con las tablas inserted y deleted.
> > >> > > NECESITO una tabla UPDATED o algo así.
> > >> > >
> > >> > > Muchas gracias
> > >> > >
> > >> > > ByLoCK
> > >> >
> > >> >
> > >>
> > >>
> > >
> > >
> >
>
>


Respuesta Responder a este mensaje
#10 Accotto Maximiliano D.
06/11/2003 - 16:10 | Informe spam
deacuerdo contigo Liliana!! yo comento lo de prestaciones porque nos ha
pasado en nuestro ERP con el tema de auditorias!! es una herramienta
excelente pero hay q usarla con precausion!!
Es muy util compartir experiencias en todo esto!! creo q para ello es muy
importante los canales de Foros!!

Un abrazo

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Liliana Sorrentino" escribió en el mensaje
news:
Probablemente mi respuesta fue demasiado breve.
En general cuando hablamos de auditoría nos referimos justamente a eso,
tener todos los datos posibles del responsable del cambio, datos


anteriores
y nuevos, si se hace desde la aplicación o no, etc.
Con respecto a las contras que mencionás, no he tenido ningún problema de
ese tipo en procesos en producción con muchas estaciones de trabajo y


tablas
importantes, y a la hora de buscar explicación a "cambios extraños" fue la
herramienta que nos dio la respuesta.

Por lo que ByLoCK plantea no creo que sea su caso, de todas maneras es
importante que expongamos nuestra experiencia y el interesado pueda


evaluar
las opciones disponibles según sus necesidades.

Saludos... Liliana.

"Accotto Maximiliano D." escribió en


el
mensaje news:eyiW#
> Solo un aporte!! si lo q se quiere es auditar con la fecha de
actualizacion
> no hariamos mucho q digamos no?
>
> Lo idea seria quizas tener una tabla de auditoria donde no solo se grabe
la
> fecha sino por ej tambien:
>
> EL usuario, el valor q habia en un campo y el nuevo (si esto es critico
no).
>
> Ojo con todos estos triggers de auditorias!! no es la panacea se paga


con
> rendimiento!! hay q ser equitativos a la hora de tomar una determinacion
asi
> porque puede hacer poner un sistema no solo inestable sino transformarlo
en
> uno de bajo rendimiento y q los usuarios se empiecen a quejar por ello,l
> necesitar mas Fierros,etc.
>
> Un saludo
>
> Accotto Maximiliano Damian
> "Liliana Sorrentino" escribió en el
mensaje
> news:
> > ¡¡¡¿¿¿Modificar la base DIRECTAMENTE???!!! Supongo que estarás


hablando
de
> > un entorno de prueba al que solo vos podés acceder, ¿no?
> > Porque de no ser así, necesitarás algo más que actualizar la fecha, yo
no
> > dudaría en grabar una auditoría o bitácora.
> > Saludos... Liliana.
> >
> > "ByLoCK" escribió en el mensaje
> > news:
> > > Muchas gracias a todos
> > >
> > >
> > > En principio me quedo con la formalización del trigger, ya que con


la
> > > actualización ya lo tenemos controlado, pero el problema venia


cuando
> > > alguien modificaba la base de datos directamente.
> > >
> > > Insisto, muchas gracias a todos.
> > >
> > > "Hilario" wrote in
> > > news::
> > >
> > > > Totalmente de acuerdo con que tu propuesta es mucho mas óptima.
> > > >
> > > > El tema es que he supuesto que ByLoCK quería una funcionalidad
similar
> > > > a la que necesitamos en mi empresa que consiste en mantener


siempre
en
> > > > todas las tablas la última fecha en la que se ha actualizado
cualquier
> > > > campo de cada tabla. En nuestro caso nos sirve simplemente para
> > > > comprobar si ha habido escrituras en una fila en el intervalo


desde
> > > > que un usuario la lee y al de un rato la actualiza en un entorno
> > > > multiusuario.
> > > >
> > > > Saludos.
> > > >
> > > > Hilario.
> > > >
> > > > "Liliana Sorrentino" wrote in
message
> > > > news:
> > > >> Hola Hilario,
> > > >> No puedo objetar nada en cuanto a la funcionalidad del trigger,
pero
> > > >> me parece que una actualización tan simple como la que plantea
> > > >> nuestro compañero no necesita del mismo.
> > > >> Te sugeriría revisar el plan de ejecución de ambas propuestas (la
> > > >> tuya y
> > > > la
> > > >> mía) y seguimos conversando sobre el tema si te parece.
> > > >> Saludos... Liliana.
> > > >>
> > > >> "Hilario Barrenkua" escribió en el mensaje
> > > >> news:#
> > > >> > Hola
> > > >> >
> > > >> > así lo hacemos nosotros:
> > > >> >
> > > >> > CREATE TRIGGER ACT1_TG_INSUPD ON dbo.ACT1
> > > >> > FOR INSERT, UPDATE
> > > >> > AS
> > > >> > UPDATE ACT1
> > > >> > SET FECACT=GETDATE()
> > > >> > FROM ACT1 A
> > > >> > INNER JOIN INSERTED I
> > > >> > ON A.ID = I.ID
> > > >> >
> > > >> > Espero que te sirva.
> > > >> >
> > > >> >
> > > >> >
> > > >> >
> > > >> > "ByLoCK" wrote in message
> > > >> > news:
> > > >> > > Hola a todos,
> > > >> > >
> > > >> > > Acabo de descubrir este grupo de noticias y me venis de


perlas.
A
> > > >> > > ver
> > > > si
> > > >> > > alguien me puede echar una manilla con el problema.
> > > >> > >
> > > >> > > El caso es que quiero crear un trigger de actualizacion sobre
una
> > > > tabla.
> > > >> > >
> > > >> > > Esta tabla es de lo mas sencilla
> > > >> > >
> > > >> > > supongamos:
> > > >> > >
> > > >> > > id int
> > > >> > > nombre nvarchar(50)
> > > >> > > fecha datetime
> > > >> > >
> > > >> > > Lo que quiero es crear un trigger que al actualizar un


registro
> > > >> > > de esa tabla (supongamos el nombre), automaticamente se me
> > > >> > > actualice el contenido de la fecha a la fecha actual
(getdate()).
> > > >> > >
> > > >> > > Mas concretamente, necesitaría poder obtener los campos del
> > > >> > > registro
> > > > que
> > > >> > > estoy actualizando al igual que puedo obtener los campos de


un
> > > > registro
> > > >> > > recien insertado o borrado con las tablas inserted y deleted.
> > > >> > > NECESITO una tabla UPDATED o algo así.
> > > >> > >
> > > >> > > Muchas gracias
> > > >> > >
> > > >> > > ByLoCK
> > > >> >
> > > >> >
> > > >>
> > > >>
> > > >
> > > >
> > >
> >
> >
>
>


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