📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

BATCH

BATCH 语法在 TiDB 中将一个 DML 语句拆分成多个语句以供执行。这意味着 没有保证事务的原子性和隔离性。因此,它是一个“非事务性”语句。

目前,INSERTREPLACEUPDATEDELETE 支持在 BATCH 中使用。

基于某一列,BATCH 语法将一个 DML 语句划分为多个范围进行执行。在每个范围内,执行单个 SQL 语句。

有关用法和限制的详细信息,请参见 Non-transactional DML statements

当你在 BATCH 语句中使用多表连接时,需要指定列的完整路径以避免歧义:

BATCH ON test.t2.id LIMIT 1 INSERT INTO t SELECT t2.id, t2.v, t3.v FROM t2 JOIN t3 ON t2.k = t3.k;

上述语句将要拆分的列指定为 test.t2.id,这是明确的。如果你使用如下的 id,则会报错:

BATCH ON id LIMIT 1 INSERT INTO t SELECT t2.id, t2.v, t3.v FROM t2 JOIN t3 ON t2.k = t3.k; Non-transactional DML, shard column must be fully specified

概要

NonTransactionalDMLStmt
BATCHONColumnNameLIMITNUMDryRunOptionsShardableStmt
DryRunOptions
DRYRUNQUERY
ShardableStmt
DeleteFromStmtUpdateStmtInsertIntoStmtReplaceIntoStmt

MySQL 兼容性

BATCH 语法是 TiDB 特有的,不兼容 MySQL。

另请参见

文档内容是否有帮助?