批处理 API
Drizzle 支持在具有 SQLite 兼容性的 libSQL 和 Cloudflare D1 驱动中批量运行 SQL 语句。
LibSQL 批处理 API 说明: 来源
使用 libSQL 客户端库时,批处理是一个或多个按顺序执行的 SQL 语句,且位于一个隐式事务中。 如果所有语句都成功,事务将被提交。如果任何语句失败,事务将回滚。
D1 批处理 API 说明: 来源
批处理会在一次调用中将多个 SQL 语句发送到数据库。这可以通过减少到 D1 的网络往返延迟来降低延迟。
const batchResponse = await db.batch([
db.insert(usersTable).values({ id: 1, name: 'John' }).returning({ id: usersTable.id }),
db.update(usersTable).set({ name: 'Dan' }).where(eq(usersTable.id, 1)),
db.query.usersTable.findMany({}),
db.select().from(usersTable).where(eq(usersTable.id, 1)),
db.select({ id: usersTable.id, invitedBy: usersTable.invitedBy }).from(usersTable),
]);type BatchResponse = [
{ id: number }[],
ResultSet,
{ id: number; name: string; verified: number; invitedBy: number | null }[],
{ id: number; name: string; verified: number; invitedBy: number | null }[],
{ id: number; invitedBy: number | null }[],
]可在 db.batch 内使用的所有可能构建器:
db.all(),
db.get(),
db.values(),
db.run(),
db.execute(),
db.query.<table>.findMany(),
db.query.<table>.findFirst(),
db.select()...,
db.update()...,
db.delete()...,
db.insert()...,