Hum, também estava pensando nisso.
- Ter uma tabela por tabela para manter revisões não seria um grande problema para mim pessoalmente, mas ei.
- O nome de usuário pode ser mantido com variáveis definidas pelo usuário, acredito, (após o início de uma sessão, emita algo como
SET @user='someone'
e use isso. - Enquanto houver gatilhos após INSERT, UPDATE e DELETE, obter os valores anterior/seguinte é uma consulta simples, armazenarei apenas os valores OLD.
Resumindo, para uma tabela com colunas (a,b,c) eu criaria uma tabela com colunas (user_id,modtime,a,b,c).
Principais desvantagens:
- as atualizações em lote são lentas (então escolha cuidadosamente suas tabelas para manter as revisões)
- duplicação de dados deluxe, você / eu terei que ter espaço de armazenamento suficiente
- dados 'relacionados' não acionam uma revisão (ou seja, alterando um
group_members
tabela não altera realmente umgroups
tabela, enquanto você pode querer manter isso como um ponto no tempo paragroups
em vez de explorargroup_members
alterações.
Em suma, parece-me um bom negócio, mas como raramente o vejo na prática, deve ser razões convincentes por que é ruim, então vou aguardar essas respostas.