TRigger con campos calculados

11/09/2007 - 21:04 por Clara | Informe spam
Hola,

Tengo una tabla en la que hay 2 campos calculados. (C1 y C2) en SS2005
Queria poner un tercer campo (C3) calculado que fuera C1 + C2, pero me dice
que no se puede poner una columna calculada en el cálculo de otra.
Los campos C1, C2 y C3 son de tipo money.

Así que para actualitzar C3 (que no es calculado) he creado un trigger en la
tabla (tblComunicats) así:
ALTER TRIGGER ActualitzaImporte
ON tblComunicats
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE tblComunicats
SET C3 = INSERTED.C2 + INSERTED.C1 FROM INSERTED
END

Esto solo funciona si desde el management studio modifico una fila
manualmente (una que no sea ni C1 ni C2 por que son claculadas).
Pero no funciona si desde una aplicación en c# actualizo una fila.

He estado leyendo en los BOL pero no doy con ello.
Alguien podria ayudarme?

Grácias.
 

Leer las respuestas

#1 principiante
12/09/2007 - 00:09 | Informe spam
Yo te recomiendo que no te compliques con el trigger sino que simplemente
para el campo calculado C3 pongas la formula completa.
Ej. si C1 es A+B y C2 es B*2, por ejemplo. entonces define a C3 como
(A+B)+(B*2) en vez de poner c1+c2.

Pero si insistes con el trigger, haz lo mismo, no uses directamente C1 y C2
sino su formula (A+B) y (B*2) segun el ejemplo.


Jose TH



"Clara" escribió en el mensaje
news:
Hola,

Tengo una tabla en la que hay 2 campos calculados. (C1 y C2) en SS2005
Queria poner un tercer campo (C3) calculado que fuera C1 + C2, pero me
dice que no se puede poner una columna calculada en el cálculo de otra.
Los campos C1, C2 y C3 son de tipo money.

Así que para actualitzar C3 (que no es calculado) he creado un trigger en
la tabla (tblComunicats) así:
ALTER TRIGGER ActualitzaImporte
ON tblComunicats
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE tblComunicats
SET C3 = INSERTED.C2 + INSERTED.C1 FROM INSERTED
END

Esto solo funciona si desde el management studio modifico una fila
manualmente (una que no sea ni C1 ni C2 por que son claculadas).
Pero no funciona si desde una aplicación en c# actualizo una fila.

He estado leyendo en los BOL pero no doy con ello.
Alguien podria ayudarme?

Grácias.







Preguntas similares