-- 成绩版本图谱:parent_id 形成 DAG,撤销后从撤销点分支,仅用于可视化。 CREATE TABLE IF NOT EXISTS result_revisions ( id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER REFERENCES result_revisions(id), event_id INTEGER NOT NULL REFERENCES events(id), action TEXT NOT NULL CHECK (action IN ('publish', 'unpublish', 'edit')), snapshot_json TEXT NOT NULL, ledger_ids TEXT NOT NULL DEFAULT '[]', -- actor_id 指向系统库 users,跨库不能建外键。 actor_id INTEGER, message TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_result_revisions_event_id ON result_revisions(event_id, created_at);