2012-05-21 13 views
5

Me pregunto, ¿hay alguna manera de interceptar operaciones DML en sqlite? Estoy buscando implementar algo así como un sistema de auditoría para recoger inserciones y actualizaciones en la base de datos y registrar los cambios en estos eventos.¿Hay algún tipo de implementación de Interceptor en sqlite

He visto el uso de desencadenadores, pero eso no fue suficiente ya que no había manera (que yo sepa) de definir un desencadenante global, y la gestión manual de desencadenantes para más de 100 tablas no suena como una buena idea ...¡a largo plazo!

Estoy abierto a cualquier sugerencia, ¡así que por favor dispare!

+0

Posible duplicado de http://stackoverflow.com/questions/422951/keeping-a-log-table-in-sqlite-database –

+0

Posible duplicado de [SQL query logging for SQLite?] (Https: // stackoverflow. com/questions/1607368/sql-query-logging-for-sqlite) – user4157124

Respuesta

5

un vistazo aquí: - http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html bajo 'Registro de todas las inserciones, actualizaciones y eliminaciones'

+2

Originalmente había visto este artículo y estaba buscando una solución no basada en un disparador con esta recompensa, pero terminé usando desencadenadores, así que lo adjudicaré ¡para ti! :) – gotomanners

7

Tal vez, esto es lo que se necesita SQLite Callback Function for Trace/Logging Query Statements

Si está codificando su aplicación en C/C++ , entonces puede darse el lujo de agregar un enlace a la API de SQLite proporcionando una función de devolución de llamada que invocaría la función sqlite_trace para registrar las instrucciones de consulta.

+0

Creo que SQLite [Tracing API] (http://www.sqlite.org/c3ref/profile.html) es el camino a seguir aquí. Eso o [Devolución de llamadas de notificación de cambio de datos] (http://www.sqlite.org/c3ref/update_hook.html). – Martijn

+0

Gracias por esa sugerencia, pero no estoy trabajando con C++ ATM. :) – gotomanners

Cuestiones relacionadas