Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá a todos,
como posso inserir um código no CakePHP para que, a cada conexão com o banco, ele crie uma tabela temporária que eu especifique?
eu sei os SQL para criar a tabela e tudo mais, o que eu realmente quero é que ele faça isso a cada conexão com o banco, tipo, conecta ao banco, cria a tabela temporária.
obrigado
a necessidade disso é que tenho triggers no banco (postgresql no caso) para fazer o log dos updates, inserts e delets.
acontece que não tem como a trigger pegar o código do usuário que está alterando os dados, tão pouco o ip por onde ele acessa, por tanto preciso passar para o banco, em algum lugar, o código do usuário.
a solução que encontrei é criar uma tabela temporária, e então inserir nela o código do usuário. Ai na trigger eu consigo pegar o código e executar os procedimentos de que preciso.
penso em fazer isso quando for feita a conexão com o banco, pois ai não preciso fazer um create table a cada instrução DDL no banco.
se houver outras sugestões de como fazer isso, agradeço.
obrigado
Eu realizo essa parte, de log no sistema, com o padrão de projeto command. Tento deixar a base de dados o mais independente possível, então evito o uso de recursos exclusivos do SGBD.
Entretanto, você pode observar os estados da conexão (conectado / desconectado), e, à partir disso, redirecionar a sua necessidade. Algum tempo atrás, eu li um exemplo bem interessante de como o padrão observer poderia tratar os usuários logados quando realiza-se o login em um sistema.
Com o observer, você pode monitorar o status da sua conexão, e, a cada conexão, notificar os observadores.
Alguns exemplos:
http://forum.imasters.com.br/topic/425372-padrao-active-record/#entry1685860
Gabriel, agradeço muito sua resposta, mas no momento o meu problema não exatamente como será feito o log, mas sim no cakephp
Concordo plenamente com relação à independência do banco, não descartarei suas sugestões, mas agora, neste momento, preciso resolver este problema com o cakephp.
o sistema de log já está implementado com as triggers, e não haverá tempo hábil para mudar tudo isso agora.
Com certeza, futuramente, irei implementar um sistema como este que, acredito eu, deve ser bem mais eficiente.
Voltando ao cakephp, eu até localizei nas classes do cakephp o método que faz a conexão como o banco mas alterar diretamente o método não é o meio mais correto. Se não houver outra maneira, precisarei fazer isso, inserir as querys diretamente lá, mas até lá espero encontrar outra maneira de fazer isso.
obrigado
Antes de prosseguir, preciso entender, qual a real necessidade disso?
Por acaso você vem de alguma linguagem de programação, como Progress, que utiliza temp tables?
No PHP isso não é lá muito usado.