keeping a log table in sqlite database?

后端 未结 2 997
暖寄归人
暖寄归人 2021-02-14 12:43

I\'m looking for a way to set up (via SQL) a log table containing everything that had been done to my sqlite database (preferably in terms of the insert, create table etc. state

相关标签:
2条回答
  • 2021-02-14 13:29

    Though the following doesn't meet all your requirements, you may wish to see one way to do it. Mike Chirico's SQLite Tutorial has a section on Logging All Inserts, Updates, and Deletes that mimics the functionality of MySQL's binlog.

    It relies on triggers that must match the schema for each table whose changes you wish to track. That is, if your table has a field called "a", then the logging table needs to keep track of "aOLD" and "aNEW". In this way, the trigger is able to record updates, inserts, and deletes made to the fields in that particular table.

    0 讨论(0)
  • 2021-02-14 13:31

    these function may be useful

    void *sqlite3_update_hook(
      sqlite3*, 
      void(*)(void *,int ,char const *,char const *,sqlite3_int64),
      void*
    );
    
    void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
    
    void *sqlite3_profile(
       sqlite3*,
       void(*xProfile)(void*,const char*,sqlite3_uint64), void*
    );
    

    they seem to act on individual dbs

    the only global way I can see is to use

    sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
    int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
    int sqlite3_vfs_unregister(sqlite3_vfs*);
    
    0 讨论(0)
提交回复
热议问题