Como detectar a alteração numa tabela de um BD?

6 respostas
R

Fala pessoal,

imaginem que tenho um sistema que mapeia uma tabela de um banco de dados num objeto, através do padrão DAO.

Tenho um campo na tabela que é mapeado para um atributo da classe correspondente. Se eu instanciar um objeto, correspondendo a um registro, gostaria de alterar este atributo toda vez que alterassem o campo relativo na tabela do BD.

É algo semelhante ao padrão Observer: quero que o objeto esteja inscrito como “ouvinte” da tabela, e altere seu atributo toda vez que alteremos a tabela.

Como fazer isso de maneira bonita do ponto de vista de OO ?

[]'s a todos,
Rafael M.

6 Respostas

yorgan

Nai sei se entendi direito, mas se você quiser alterar dados de outras tabelas quando uma é alterada você pode utilizar triggers. Acho que isso resolveria o seu problema.

[]´s

luistiagos

não e melhor usar uma trigger pra fazer isto não?

R

Fala pessoal,

na verdade eu não tenho interesse em alterar outra tabela, e sim um atributo de um objeto…

Vamos colocar a seguinte forma: como detectar alterações em uma tabela do MSSQLSERVER e capturar os valores alterados como o JAVA ?

[]'s a todos,
Rafael M.

yorgan

Olha, nunca passei por uma situação como essa. Mas acho que se você está implementando a parte de persistencia no banco, você consegue capturar a alteração antes de ela ser efetuada, isso não resolveria o problema?

R

Na verdade os usuários alteram ao banco através de um sistema, e eu estou programando um outro sistema que vai atuar somente como leitor deste banco. Eu quero saber quando os usuários alteram o banco e realizar operações específicas.

É simples assim: eu quero programar um “listener” de banco de dados.

[]'s a todos,
Rafael M.

T

Se qualquer aplicação (incluindo aplicações não-Java) estiverem alterando a tal tabela, talvez seja necessário criar um trigger que logue as alterações em uma outra tabela. Aí você, periodicamente, consulta a tal tabela. Mas isso é uma “solução genérica”.
Veja a documentação do seu banco de dados (e diga qual é o seu banco, oras!) para ver qual é a melhor solução para seu caso.
Se o que você quer implementar é um log de auditoria, ou então um sistema de replicação, existem coisas prontas (às vezes no próprio banco, às vezes como produto de terceiros).

http://mike2.openmethodology.org/wiki/ETL_Design_Techniques_for_Incremental_Capture

Criado 4 de junho de 2008
Ultima resposta 4 de jun. de 2008
Respostas 6
Participantes 4