Manage Data

INSERT, UPDATE, and DELETE statements live in queries/ alongside SELECT files. SQLiteNow generates typed params from named SQL parameters and notifies affected tables after generated write methods run.

queries/task/insertOne.sql
queries/task/completeById.sql
queries/task/deleteCompleted.sql

INSERT

INSERT INTO task (title, completed, created_at)
VALUES (:title, 0, :createdAt);
db.task.insertOne(
    TaskQuery.InsertOne.Params(
        title = "Call patient",
        createdAt = "2026-05-05T12:00:00Z",
    )
)

UPDATE

UPDATE task
SET completed = 1
WHERE id = :id;
db.task.completeById(TaskQuery.CompleteById.Params(id = taskId))

DELETE

DELETE FROM task
WHERE completed = 1;
db.task.deleteCompleted()

When all writes go through generated SQLiteNow methods, watchers are notified automatically. Use external table change reporting only for writes that bypass SQLiteNow generated methods.