2012-05-21 9 views
5

Mi chiedo, c'è un modo per intercettare le operazioni DML in sqlite ?? Sto cercando di implementare qualcosa come un sistema di controllo per raccogliere inserti e aggiornamenti sul database e registrare le modifiche su questi eventi.Esiste una sorta di implementazione di Interceptor in sqlite

Ho cercato di utilizzare i trigger ma non era sufficiente in quanto non c'era modo (che io sappia) di definire un trigger globale e gestire manualmente i trigger per oltre 100 tabelle non sembra una buona idea ...lungo termine!

Sono aperto a qualsiasi suggerimento, quindi per favore sparare via!

+0

Possibile duplicato di http://stackoverflow.com/questions/422951/keeping-a-log-table-in-sqlite-database –

+0

Possibile duplicato di [SQL query logging per SQLite?] (Https: // stackoverflow. it/questions/1607368/sql-query-logging-for-sqlite) – user4157124

risposta

5

Date un'occhiata qui: - http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html sotto 'Registrazione tutti gli inserti, aggiornamenti ed eliminazioni'

+2

Originariamente avevo visto questo articolo e stavo cercando una soluzione non basata su trigger con questa taglia, ma alla fine ho optato per i trigger, quindi la assegnerò a te! :) – gotomanners

7

Forse, questo è quello che si avrebbe bisogno SQLite Callback Function for Trace/Logging Query Statements

Se si esegue la codifica la vostra applicazione in C/C++ , quindi hai il lusso di aggiungere un hook all'API di SQLite fornendo una funzione di callback che invocherebbe la funzione sqlite_trace per la registrazione delle istruzioni della query.

+0

Penso che l'API [Tracing API] di SQLite (http://www.sqlite.org/c3ref/profile.html) sia il modo per andare qui. Quello o [Callback di notifica modifica dati] (http://www.sqlite.org/c3ref/update_hook.html). – Martijn

+0

Grazie per questo suggerimento ma non sto lavorando con C++ ATM. :) – gotomanners