Fecha de modificacion automatica

08/09/2008 - 01:24 por Luisa Goicochea | Informe spam
Hola a todos

Segun pruebas veo que puedo definir un campo DateTime() y ponerle como valor
default la funcion GetDate() para que me incluya alli automaticamente la
fecha-hora de alta de un registro insertado.

Pero, estoy interesada en ver si hay alguna manera de cuando se manda a
actualizar el registro guardar en otro campo automaticamente la fecha-hora
de modificacion ?

La idea es que se haga automaticamente desde el servidor (getdate()) y no
mandarsela llena desde la aplicacion.

Se puede eso?

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
08/09/2008 - 12:14 | Informe spam
Hola Luisa,

Puedes conseguir esto fácilmente con un trigger INSTEAD OF UPDATE que te
actualice dicha columna de forma automática sin tenerla que especificar en el
update.

Rubén Garrigós
Solid Quality Mentors

"Luisa Goicochea" wrote:

Hola a todos

Segun pruebas veo que puedo definir un campo DateTime() y ponerle como valor
default la funcion GetDate() para que me incluya alli automaticamente la
fecha-hora de alta de un registro insertado.

Pero, estoy interesada en ver si hay alguna manera de cuando se manda a
actualizar el registro guardar en otro campo automaticamente la fecha-hora
de modificacion ?

La idea es que se haga automaticamente desde el servidor (getdate()) y no
mandarsela llena desde la aplicacion.

Se puede eso?



Respuesta Responder a este mensaje
#2 Luisa Goicochea
08/09/2008 - 13:05 | Informe spam
Hola Ruben,

Bien, lo voy a chequear. Una pregunta: no afecta el rendimiento
significativamente ese metodo verdad ?

Gracias por la ayuda


"Rubén Garrigós" escribió en el
mensaje news:
Hola Luisa,

Puedes conseguir esto fácilmente con un trigger INSTEAD OF UPDATE que te
actualice dicha columna de forma automática sin tenerla que especificar en
el
update.

Rubén Garrigós
Solid Quality Mentors

"Luisa Goicochea" wrote:

Hola a todos

Segun pruebas veo que puedo definir un campo DateTime() y ponerle como
valor
default la funcion GetDate() para que me incluya alli automaticamente la
fecha-hora de alta de un registro insertado.

Pero, estoy interesada en ver si hay alguna manera de cuando se manda a
actualizar el registro guardar en otro campo automaticamente la
fecha-hora
de modificacion ?

La idea es que se haga automaticamente desde el servidor (getdate()) y no
mandarsela llena desde la aplicacion.

Se puede eso?



Respuesta Responder a este mensaje
#3 Rubén Garrigós
08/09/2008 - 13:37 | Informe spam
Hola Luisa,

El impacto en el rendimiento depende de muchos factores como si las
operaciones de update se realizan registro a registro o orientadas a
conjuntos, si la columna datetime está o no indexada, la frecuencia de
actualizaciones, el número de registros afectados, etc.

En principio con un trigger instead of lo que vas a conseguir a efectos
prácticos es tener un procedimiento almacenado (el trigger) que se ejecute
cuando actualizas filas. Si dicho trigger es eficiente, el rendimiento no se
resentirá mucho respecto al del update sin trigger. Si internamente hicieras
algo como añadir un cursor para actualizar la fecha de todos los registros
actualizados, entonces el rendimiento sería mucho peor.

Por tanto mi recomendación es que el cuerpo del trigger sea lo más sencillo
posible (básicamente una reescritura del update de forma que añadas la
columna de la fecha con valor getDate() en la clausula SET del update)

Rubén Garrigós
Solid Quality Mentors

"Luisa Goicochea" wrote:

Hola Ruben,

Bien, lo voy a chequear. Una pregunta: no afecta el rendimiento
significativamente ese metodo verdad ?

Gracias por la ayuda


"Rubén Garrigós" escribió en el
mensaje news:
> Hola Luisa,
>
> Puedes conseguir esto fácilmente con un trigger INSTEAD OF UPDATE que te
> actualice dicha columna de forma automática sin tenerla que especificar en
> el
> update.
>
> Rubén Garrigós
> Solid Quality Mentors
>
> "Luisa Goicochea" wrote:
>
>> Hola a todos
>>
>> Segun pruebas veo que puedo definir un campo DateTime() y ponerle como
>> valor
>> default la funcion GetDate() para que me incluya alli automaticamente la
>> fecha-hora de alta de un registro insertado.
>>
>> Pero, estoy interesada en ver si hay alguna manera de cuando se manda a
>> actualizar el registro guardar en otro campo automaticamente la
>> fecha-hora
>> de modificacion ?
>>
>> La idea es que se haga automaticamente desde el servidor (getdate()) y no
>> mandarsela llena desde la aplicacion.
>>
>> Se puede eso?
>>
>>
>>



Respuesta Responder a este mensaje
#4 Alejandro Mesa
08/09/2008 - 15:47 | Informe spam
Luisa,

Si usas un procedimiento alamacenado para hacer la actualizacion, entonces
no tienes por que usar un trigger. Claro esta, todas las actualizaciones
deben hacerse mediante el uso de este procedimiento y/o tener en cuenta que
esta columna no se actualiza por si sola, de lo contrario deberas seguir con
la idea de usar un trigger.

create procedure dbo.usp_Upd_t1
@c1 int,
c2 varchar(50)
as
set nocount on

update dbo.t1
set c2 = @c2, [fecha_ins_upd] = getdate()
where c1 = @c1

return @@error
go

exec dbo.usp_upd_t1 4, 'Prueba'
go

select * from dbo.t1 where c1 = 4
go

...


AMB


"Luisa Goicochea" wrote:

Hola a todos

Segun pruebas veo que puedo definir un campo DateTime() y ponerle como valor
default la funcion GetDate() para que me incluya alli automaticamente la
fecha-hora de alta de un registro insertado.

Pero, estoy interesada en ver si hay alguna manera de cuando se manda a
actualizar el registro guardar en otro campo automaticamente la fecha-hora
de modificacion ?

La idea es que se haga automaticamente desde el servidor (getdate()) y no
mandarsela llena desde la aplicacion.

Se puede eso?



Respuesta Responder a este mensaje
#5 Carlos M. Calvelo
08/09/2008 - 17:23 | Informe spam
Hola Alejandro,

On 8 sep, 15:47, Alejandro Mesa
wrote:
Luisa,

Si usas un procedimiento alamacenado para hacer la actualizacion, entonces
no tienes por que usar un trigger.



Y si usa un trigger... entonces no tiene por que usar un
procedimiento almacenado.

Claro esta, todas las actualizaciones
deben hacerse mediante el uso de este procedimiento y/o tener en cuenta que
esta columna no se actualiza por si sola,



Con un trigger no tiene que tener en cuenta nada de todo eso.
Las actualicaciones se hacen con una interfaz convencional
y esa columna puede actualizarse 'por si sola'.

de lo contrario deberas seguir con
la idea de usar un trigger.



Mejor que siga con esa idea, sí.


create procedure dbo.usp_Upd_t1
@c1 int,
c2 varchar(50)
as
set nocount on

update dbo.t1
set c2 = @c2, [fecha_ins_upd] = getdate()
where c1 = @c1

return @@error
go

exec dbo.usp_upd_t1 4, 'Prueba'
go

select * from dbo.t1 where c1 = 4
go




Y que ventajas tiene hacer

1) exec dbo.usp_upd_t1 4, 'Prueba'

sobre hacer

2) update dbo.t1 set c2='Prueba', fecha_ins_upd=getdate() where c1=4

?

Con 1) no se puede especificar qué columnas se quieren actualizar.
Ni se puede actualizar un conjunto de registros a la vez. Algo
bastante básico con SQL.
Solo es una forma muchísimo mas restringida de lo que ya
teníamos y no añade ninguna posibilidad nueva.

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida