Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/05/2012, 18:48
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 2 meses
Puntos: 85
Respuesta: Se puede llamar un campo de dos maneras

Si no puedes modificar el código de la aplicación que inserta los datos, tienes dos opciones:

1. Como bien dices, crear un trigger que actualice el campo fallo cuando se inserta en el campo error y actualice el campo error cuando se inserta en el campo fallo, de esta manera la página web solo tiene que consultar un campo para realizar los informes.

Código:
create table t1 (id int, fallo varchar(10), error varchar(10))
go
create trigger trg1 on t1 after insert 
as
begin
 if (select error from inserted) is null
  update t1
  set t1.error = i.fallo
  from inserted i
  where t1.id = i.id
 else
  update t1
  set t1.fallo = i.error
  from inserted i
  where t1.id = i.id
end
go
insert into t1 values (1, 'fallo1', null)
insert into t1 values (1, null, 'error1')
go
select id, error from t1
go
2. Modificar la página web para que consulte el campo error o el campo fallo en función de los valores nulos.

Código:
create table t1 (id int, fallo varchar(10), error varchar(10))
go
insert into t1 values (1, 'fallo1', null)
insert into t1 values (1, null, 'error1')
go
select 
 id, 
 errores = case
        when fallo is not null then fallo
        when error is not null then error
        else 'sin datos'
       end
from t1
go
El rendimiento dependerá de varios factores, la primera opción te favorece si el campo t1.id es pk o unique y los reportes se hacen con funciones de agregado (ej: count(error) o group by error), y la segunda opción te favorece si la tabla no tiene una pk y los reportes no suman o agrupan la cantidad de errores.

Saludos