Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

trygger(sql server)

Estas en el tema de trygger(sql server) en el foro de Bases de Datos General en Foros del Web. hola, tengo dos dudas que me han surgido programando un trygger, una es:¿hay alguna manera de obtener la fecha y hora local del sistema a ...
  #1 (permalink)  
Antiguo 05/10/2004, 08:12
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
trygger(sql server)

hola, tengo dos dudas que me han surgido programando un trygger, una es:¿hay alguna manera de obtener la fecha y hora local del sistema a traves del servidor de sql server(solo sql), se decir, con una funcion predefinida o algo similar?
y la otra no tiene nada que ver con los trigger, se trata de como puedo realizar una operacion de insertar(solo con sql) cuando uno de los campos es perteneciente a otra tabla, En el caso de un trygger, como obtengo dicho campo, es decir si el trygger salta con un determinado registro, y yo necesito un campo de dicho registro como hago alusion a él?

Para poneros en el contexto..., estoy tratando de implementar un historial de operaciones sobre la BD por parte de usuarios. Aunque lo podria hacer por codigo(estoy trabajando con asp.net), estoy considerando usar los trygger al ejecutarse alguna de las sentencias insert, update o delete, de tal forma que cuando esto pase se inserte en una tabla(el historial) un registro. Pero resulta que uno de los campos ha de ser la fecha y hora en que se realizo la insercion del registro en la tabla historial y otros varios campos pertenecen a la tabla que dispara el trygger(por eso se ha de hacerse todo con la sintaxis transact-sql).

Espero haberme explicado con claridad. Un saludo
  #2 (permalink)  
Antiguo 05/10/2004, 09:32
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Para obtener la fecha del sistema la función es GetDate(), esta devuelve el día y la hora actuales, y para saber que campo está modificando, utiliza UPDATED(nombrecampo) sería algo así

IF Updated(Campo1)
BEGIN
.........
END


y para obtener el dato que estás modificando, suponiendo que estuviera almacenando el valor antiguo y/o el nuevo, el dato anterior está en la tabla deleted (Select Campo FROM deleted) y el nuevo en inserted (SELECT Campo FROM inserted

Espero haberte entendido y ayudado, un saludo
  #3 (permalink)  
Antiguo 06/10/2004, 00:44
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Me va perfecto, muchas gracias porque pase un buen rato buscando en la web sin encontrar nada al respecto. Gracias

Un saludo desde Cádiz.
  #4 (permalink)  
Antiguo 06/10/2004, 01:36
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Pues no me va tan bien... , lo de la hora del sistema sin pega. El problema radica al obtener los campos. Entiendo la consulta que se realiza a las tablas temporales inserted y deleted y demás pero necesito almacenar este valor devuelto en una variable(@variable) para luego introducirla en la consulta INSERT ...) VALUES('aqui lo introduzco','..',...). En este contexto no se pueden usar consultas anidadas asi que debo antes obtenerlo en una variable, ¿no?

Bueno esperos vuestras respuestas, gracias de antemano.
  #5 (permalink)  
Antiguo 06/10/2004, 01:55
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Este es el codigo:

CREATE TRIGGER INSERCION ON [dbo].[Jand_Ofer_Empl]
FOR INSERT
AS
INSERT INTO Jand_Hist (Id_Usua_Hist, Accion_Hist, FecyHor_Hist, Elem_Hist, Id_Elem_Hist)
VALUES (2, 'INSERCION',GetDate(), 'Oferta de Empleo',5 )

donde los valores 2 y 5, los debo obtener mediente una consulta(ahora son estaticos para probar), pero mi problema es como hago llegar el valor obtenido¿variables, consultas anidadas,...?
  #6 (permalink)  
Antiguo 06/10/2004, 02:17
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Cita:
Iniciado por kemahangre
Este es el codigo:

CREATE TRIGGER INSERCION ON [dbo].[Jand_Ofer_Empl]
FOR INSERT
AS
INSERT INTO Jand_Hist (Id_Usua_Hist, Accion_Hist, FecyHor_Hist, Elem_Hist, Id_Elem_Hist)
VALUES (2, 'INSERCION',GetDate(), 'Oferta de Empleo',5 )

donde los valores 2 y 5, los debo obtener mediente una consulta(ahora son estaticos para probar), pero mi problema es como hago llegar el valor obtenido¿variables, consultas anidadas,...?

Dependiendo de dónde quieras sacar los valores 2 y cinco tu consulta puede cambiar... suponiendo que son valores antiguos sería así

INSERT INTO Jand_Hist (Id_Usua_Hist, Accion_Hist, FecyHor_Hist, Elem_Hist, Id_Elem_Hist)
SELECT IdUsua, 'INSERCION', GetDate(), 'Oferta de Empleo', Id_Element from deleted

Bueno... más o menos... almacenarlas en variables te puede ocasionar algún problema si haces actualizaciones masivas...

Un saludo
  #7 (permalink)  
Antiguo 06/10/2004, 02:33
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias es justo lo que necesitaba saber. Aunque lo implemente con una variable, Muchas Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:26.