Envío de datos incrementales a otra aplicación desde la base de datos Oracle: - Incluso una pequeña sugerencia sería muy útil

Aug 15 2020

Tengo 1 mesa, supongamos Item. hay muchos DMLeventos en esta mesa a diario. Independientemente de lo que suceda DML (Insertar eliminación de actualización) en esta tabla, necesito insertar los datos de esta transacción en otra aplicación usando APIs.

si en la tabla de elementos, se insertan 2 registros, 1 se actualiza y 1 se elimina, necesito inyectar datos en otra aplicación en el siguiente formulario. El archivo estará en formato json.

  I can create below file. My question is regarding how to extract daily transactional data.
{
  "insert": ["A1,A2"].
   "delete": "B1",
   "update": "C1 "
}

algo como arriba. significa que si A1 A2 se insertó en la tabla de elementos, B1 se eliminó y C1 se actualizó. así que enviaré los datos en el formato anterior a la aplicación de destino para hacer cambios.

Para hacer esto, creé una tabla más Item_trigger. también creé triggeren la tabla de artículos. así que si ocurre algún DML triggerse insertará en la Item_triggertabla con valor

('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')

luego, usando la Item_triggertabla, crearé un archivo y enviaré los datos al sistema de destino.

El diseño anterior ha sido rechazado porque estoy usando trigger.¿Hay alguna buena solución? Estaba pensando en MV pero no considera eliminarlo. no lo considera deleteasí que no puedo usar ni siquiera eso.

¿Podría ayudarme con el diseño? ¿Hay alguna forma de registrar la transacción sin usartrigger

Respuestas

Atif Aug 15 2020 at 23:32

Puede hacer uso de la auditoría a nivel de declaración en una mesa particular. Pero eso solo proporcionará la información de qué tipo de operación se ha realizado, pero no los datos reales. Puede combinar esta información con el almacenamiento del valor de cualquier elemento insertado, eliminado y actualizado en otra tabla o utilizar la tabla principal para transmitir datos directamente.

A continuación se muestra el guión

audit select,insert,update,delete on test.test_audit by access;
delete from test_audit where id <= 10;
select * from Dba_Audit_Object where OBJ_NAME='TEST_AUDIT';