Actualmente estoy escribiendo instrucciones de actualización para mantener constantemente actualizada una tabla que puede consultarse. El esquema es idéntico entre ambas tablas y los contenidos no son importantes:Actualización de Oracle SQL basada en la subconsulta entre dos tablas
STAGING
ID
NAME
COUNT
PRODUCTION
ID
NAME
COUNT
Mi instrucción de actualización se ve de la siguiente manera:
update PRODUCTION
set name = (select stage.name from staging stage where stage.name=name and rownum <2),
count = (select stage.countfrom staging stage where stage.count=count and rownum <2);
Las dos cosas a destacar es que 1) No hay donde cláusula el final de mi actualización (este puede ser el problema) y 2) todos los registros después de ser actualizados tienen los mismos valores. Lo que quiero decir con esto es la siguiente:
BEFORE UPDATE:
1,"JOHN", 12;
2,"STEVE",15;
3,"BETTY",2;
AFTER UPDATE
1,"JOHN", 12;
2,"JOHN",12;
3,"JOHN",12;
Mi pregunta es ¿cómo puedo solucionar esto para que el cuadro refleja adecuadamente "nuevos" datos de puesta en escena como una actualización de SQL correcta?
ACTUALIZACIÓN
Así que mis datos de estadificación podrían casualmente reflejan lo que está en PRODUCTION
y por el bien de la discusión se hará lo siguiente:
STAGING DATA TO MERGE:
1,"JOHN", 12;
2,"STEVE",15;
3,"BETTY",2;
ACTUALIZACIÓN el segundo
La consulta que Me gustaría ejecutar sería esto:
update PRODUCTION
set production.name = staging.name,
production.count = staging.count
where production.name = staging.name;
Sin embargo, esto da lugar a problemas de identificadores válidos en "staging.name"
¿Desea mantener ** tabla ** ** y ** contar ** en ** tabla ** PRODUCCIÓN ** actualizada y ** tabla ** ESTÁNDAR ** está cambiando? – hmmftg
¿Por qué no usa desencadenantes para insertar nuevos valores en lugar de esta actualización? ¿Qué hace exactamente esta actualización? – hmmftg
De acuerdo, al sincronizar tablas, los activadores pueden ser realmente útiles para mantenerlos actualizados en tiempo real. Solo tenga cuidado con la mutación de errores de tabla, y asegúrese de hacerlo como DESPUÉS DE INSERTAR O ACTUALIZAR. – Hermit