Envio de dados incrementais para outro aplicativo do banco de dados Oracle: - Mesmo uma pequena sugestão seria muito útil
Eu tenho 1 mesa, vamos supor Item
. há muitos DML
eventos diários nesta mesa. Qualquer DML (Insert update delete) acontece nesta tabela, eu preciso inserir esses dados de transação em outro aplicativo usando APIs
.
se na tabela de itens, 2 registros são inseridos, 1 atualizado e 1 excluído, preciso injetar dados em outro aplicativo no formulário abaixo. o arquivo estará no 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 acima. significa que se A1 A2 for inserido na tabela de itens, B1 foi excluído e C1 foi atualizado. então, enviarei os dados no formato acima para o aplicativo de destino para fazer alterações.
Para fazer isso, criei mais uma tabela Item_trigger
. também criei trigger
na tabela de itens. então, se qualquer DML acontecer, trigger
será inserido na Item_trigger
tabela com valor
('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')
então, usando a Item_trigger
tabela, vou criar o arquivo e enviar os dados para o sistema de destino.
O projeto acima foi rejeitado porque estou usando o gatilho. Existe alguma boa solução? Eu estava pensando em MV, mas não considero deletar. não considera, delete
então não posso usar nem isso.
Você poderia me ajudar com o design. Existe alguma maneira de registrar a transação sem usartrigger
Respostas
Você pode usar a auditoria em nível de instrução em uma tabela específica. Mas isso fornecerá apenas as informações de que tipo de operação foi realizada, mas não os dados reais. Você pode combinar essas informações com o armazenamento do valor de tudo o que foi inserido, excluído e atualizado em outra tabela ou usar a tabela principal para transmitir dados diretamente.
Abaixo está o roteiro
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';