跳到主要内容

generateSwitchBranchStatements()

function generateSwitchBranchStatements(adapter, branchId): string[];

Defined in: packages/rxdb-adapter-sqlite-core/src/version/switch_branch.ts:43

生成切换分支要执行的 SQL 语句序列,按执行顺序返回。

Parameters​

ParameterType
adapterRxDBAdapterSqliteBase
branchIdstring

Returns​

string[]

Remarks​

分成数组而不是拼成一整段,是因为结果集的收集按语句边界走:oo1 的 db.exec() 对多语句 SQL 只收第一条「有结果列」的语句的行(evalFirstResult)。切换分支拆成 「熄灭 + 点亮」两条 RETURNING 之后,拼在一起交给一次 execute(),点亮那条的行 就再也进不了 transaction_sqlite_result——目标分支的缓存实体停在 activated = false, 而 SQL 本身执行得好好的,没有任何报错。

所以调用方要么逐条 execute()(switch_branch,它要那些行来派发事件), 要么拼起来一次性执行(只关心写入副作用的路径,如 withTriggersDisabled)。