y porque no lo haces desde un trigger de actualizacion de la tabla A?
Saludos
PabloC
----- Original Message -----
From: Leonardo Micheloni
To: pablo.canonico
Sent: Monday, January 21, 2008 3:13 PM
Subject: [dbms] Consuta de replicación de tablas
Hola listeros,
Tengo que resolver lo siguiente y no sé cómo:
Tengo una tabla A con datos que se copian tal cual a la tabla B
De forma que la tabla B tiene quedar igual que la A, o sea, lo que sobra se
borra, lo que falta se inserta y lo que está se actualiza.
Intenté resolverlo con CASE pero no puedo hacer más que SELECT dentro de cada
opción del case
con IF tampoco puede resolverlo
La idea es resolverlo en una sóla consulta determinando qué actualizar,
insertar, borrar con joins, eso funciona, según el valor de un campo resultado
sé qué tengo que hacer, el tema es que no sé cómo hacer que haga una u otra
cosa dentro de la misma consulta, intenté con CTE pero no le encontré la
vuelta, pego algo que hice a ver si me pueden dar una idea, o ver por dónde
tengo que encararlo, gracias de antemano
with t (clave1origen, clave1destino) as
(
select o.clave1 clave1origen, d.clave1 clave1destino from
origen o full outer join destino d
on o.clave1 = d.clave1
and
o.clave2 = d.clave2
)
select case
when t.clave1origen is null then
--insertar
insert into destino (clave1, valor) value (t.clave1, t.valor)
when t.clave1origen is not null and t .clave1destino is not null then
'actualiza'
when t.clave1origen is not null and t.clave1destino is null then
'insertar'
end
from (
select o.clave1 clave1origen, d.clave1 clave1destino , o.valor valor from
origen o full outer join destino d
on o.clave1 = d.clave1
and
o.clave2 = d.clave2) t
--
Leonardo Micheloni.
http://leomicheloni.blogspot.com/