@laverna
Для отслеживания изменений в базе данных SQLite3 в Golang вы можете использовать пакет github.com/mattn/go-sqlite3. Он предоставляет функцию для регистрации обратных вызовов, которые будут вызываться при выполнении операций с базой данных.
Вот пример кода, который показывает, как отслеживать изменения в базе данных SQLite3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package main import ( "database/sql" "fmt" "log" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3", "test.db") if err != nil { log.Fatal(err) } defer db.Close() // Регистрация обратного вызова для отслеживания изменений db.SetTraceCallback(func(sql string, args []interface{}) { fmt.Println("QUERY:", sql) fmt.Println("ARGS:", args) }) // Создание таблицы _, err = db.Exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)") if err != nil { log.Fatal(err) } // Добавление данных _, err = db.Exec("INSERT INTO users(name) VALUES (?)", "John Doe") if err != nil { log.Fatal(err) } // Обновление данных _, err = db.Exec("UPDATE users SET name = ? WHERE id = ?", "Jane Smith", 1) if err != nil { log.Fatal(err) } // Удаление данных _, err = db.Exec("DELETE FROM users WHERE id = ?", 1) if err != nil { log.Fatal(err) } } |
В этом примере обратный вызов db.SetTraceCallback
зарегистрирован для отслеживания выполненных операций. Когда выполняются операции CREATE, INSERT, UPDATE или DELETE, обратный вызов будет вызван и покажет соответствующий SQL-запрос и аргументы.
Установите github.com/mattn/go-sqlite3
с помощью команды go get github.com/mattn/go-sqlite3
, если пакет еще не установлен.