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

#1 Liliana Sorrentino
05/11/2003 - 17:36 | Informe spam
Hola,
Bueno, tabla UPDATED no existe porque justamente cuando actualizás SQL está
borrando la información vieja e insertando la nueva.
Si la actualización es tan simple, yo no haría un trigger en tu caso,
simplemente haría esto:

UPDATE mitabla
SET nombre = nombrenuevo, fecha = getdate()
WHERE id = xxxxx

Saludos... Liliana.

"ByLoCK" escribió en el mensaje
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
#2 Hilario Barrenkua
05/11/2003 - 18:01 | Informe spam
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
#3 Liliana Sorrentino
05/11/2003 - 18:32 | Informe spam
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
#4 Accotto Maximiliano D.
05/11/2003 - 18:42 | Informe spam
hola!! si en la actulizacion vos queres poner el where deberias hacer lo q
dice liliana!! ahora esto tiene un problema!! sui por ej usas el antherprise
y modificas un dato no se cambiara automaticamente el campo fecha!! (si
quieres hacer ello si justifica uin trigger).

Ahora si lo q te interesa en hacer un update y siempre lo controlas vos!!
bue no hags un trigger por lo q recomienda Liliana (fijate el plan de
ejecucion del mismo).

Todo esto dependera de la regla de negocios q quieres implementar y como.

Ademas no hay tablas update!! solo hay inserted y deleted.
Cuando vos haces un update en la tabla deleted estan los valores originales
y en la inserted los nuevos a insertar.

Un abrazo


Accotto Maximiliano Damian
"ByLoCK" escribió en el mensaje
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
#5 Hilario
05/11/2003 - 20:12 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida