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