用途:该技能面向使用 Electric 同步、并以 Drizzle ORM 或 Prisma 作为写入路径的项目,解决 ORM 写入后如何返回 txid 供 Electric 对账的问题。它建立在 electric-shapes 与 electric-schema-shapes 之上,建议先阅读这两者。
主要能力:演示在 Drizzle 的 db.transaction 与 Prisma 的 $transaction 中,通过原生 SQL 查询 SELECT pg_current_xact_id()::xid::text AS txid 获取事务 ID,并与插入操作放在同一事务内返回;同时给出迁移中为表设置 ALTER TABLE ... REPLICA IDENTITY FULL 的写法,以及在 TanStack DB 集合的 onInsert 回调中返回 txid 的示例。
使用方式:Drizzle 侧用 tx.execute(sql...) 执行 txid 查询,Prisma 侧用 tx.$queryRaw 执行;迁移文件里在建表后追加 REPLICA IDENTITY FULL;集合配置中把写入函数返回的 txid 交给 onInsert。
限制与常见错误:ORM 默认不返回 pg_current_xact_id(),必须手动加原生查询,否则乐观状态可能在同步版本到达前被丢弃,导致界面闪烁;部分迁移工具重建表时会重置属性,重建后需重新设置 REPLICA IDENTITY FULL,否则 Electric 无法正确流式传输更新与删除。版本目标为 @electric-sql/client v1.5.10。