Posted to tcl by apn at Wed Oct 27 15:12:39 GMT 2010view raw

  1. static void DbUpdateHandler(
  2. void *p,
  3. int op,
  4. const char *zDb,
  5. const char *zTbl,
  6. sqlite_int64 rowid
  7. ){
  8. SqliteDb *pDb = (SqliteDb *)p;
  9. Tcl_Obj *pCmd;
  10.  
  11. assert( pDb->pUpdateHook );
  12. assert( op==SQLITE_INSERT || op==SQLITE_UPDATE || op==SQLITE_DELETE );
  13.  
  14. pCmd = Tcl_DuplicateObj(pDb->pUpdateHook);
  15. Tcl_IncrRefCount(pCmd);
  16. Tcl_ListObjAppendElement(0, pCmd, Tcl_NewStringObj(
  17. ( (op==SQLITE_INSERT)?"INSERT":(op==SQLITE_UPDATE)?"UPDATE":"DELETE"), -1));
  18. Tcl_ListObjAppendElement(0, pCmd, Tcl_NewStringObj(zDb, -1));
  19. Tcl_ListObjAppendElement(0, pCmd, Tcl_NewStringObj(zTbl, -1));
  20. Tcl_ListObjAppendElement(0, pCmd, Tcl_NewWideIntObj(rowid));
  21. Tcl_EvalObjEx(pDb->interp, pCmd, TCL_EVAL_DIRECT);
  22. }
  23.