Actualizar registros de una tabla en otra

Tengo dos tablas con la misma estructura, una es TEMP (temporal) y la otra PROD (producción) - para este ejemplo, campos ID y Código.
La tabla TEMP es actualizada diariamente, luego de ser aprobada, el nuevo contenido de TEMP requiero que sea grabado en PROD.
Así:
  TEMP PROD
---------- ----------
Id código id código
01 DEX 01 DEX
02 NET 02 NET
03 RAS
04 BTU
¿Cómo hago, para que SOLO los nuevos campos (ID : 03 y 04) sean actualizados en la tabla PROD?

1 Respuesta

Respuesta
1
Bien, si solo se inserta sería algo así:
INSERT INTO prod (id, codigo)
SELECT  id, codigo FROM temp
WHERE id NOT IN (SELECT  id FROM prod)
Si ademas hay que actualizar datos (creo que no es tu caso) se puede usar el merge que es muy potente (también habría que evaluarlo con el insert solo a ver como anda en rendimiento).
MERGE INTO prod USING temp
ON (prod.id = temp.id)
/* no seria de tu utilidad el update
WHEN MATCHED THEN
UPDATE SET
prod.codigo = temp.codigo
fin codigo inutil */
WHEN NOT MATCHED THEN
INSERT (id, codigo)
VALUES (temp.id, temp.codigo);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas