Ver Mensaje Individual
  #3  
Antiguo 09-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.738
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Prueba a hacerlo en el trigger BEFORE Update.

En el After Update ya no se graban cambios en el registro. Este tipo de trigger es para hacer cosas después de que los datos han sido escritos y que lo que se haga luego sea teniendo esto en cuenta.

Yo trabajo con firebird, pero la lógica del BU y el AU debería ser la misma.

Supongo además, que no debes hacer el update de tabla dentro del trigger, sino que lo único que debes hacer es modificar el valor de fecha.

En firebird sería algo asi:
Código SQL [-]
create trigger Tabla_BU for tabla active before update
begin
   new.fecha = 'Now';
end

En SQLServer debe ser algo asi:
Código SQL [-]
ALTER TRIGGER [TR_BU_TRIGGER1]
ON [dbo].[TABLA]
BEFORE UPDATE
AS
BEGIN
   SET NOCOUNT OFF
   IF (UPDATE(CAMPO1) OR UPDATE(CAMPO1) OR UPDATE(CAMPO2))
   BEGIN
      DECLARE @AHORA DATETIME
      SET @AHORA = GETDATE()
      dbo.TABLAS.FECHA = @AHORA {esto no se si será asi}
   END
END

o quizás sea mejor sin definir variables intermedias:
Código SQL [-]
ALTER TRIGGER [TR_BU_TRIGGER1]
ON [dbo].[TABLA]
BEFORE UPDATE
AS
BEGIN
   SET NOCOUNT OFF
   IF (UPDATE(CAMPO1) OR UPDATE(CAMPO1) OR UPDATE(CAMPO2))
   BEGIN
      dbo.TABLAS.FECHA = GETDATE() {esto no se si será asi}
   END
END

Última edición por duilioisola fecha: 09-10-2007 a las 18:30:14.
Responder Con Cita