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/ 

Responder a