📣

TiDB Cloud Serverless が
Starter
に変わりました!このページは自動翻訳されたものです。
原文はこちらからご覧ください。

バッチ

TomShawn
Oreoxmt

BATCH構文は、TiDB 内で DML 文を複数の文に分割して実行します。つまり、トランザクションの原子性と独立性は保証されません。したがって、これは「非トランザクション」文です。

現在、 BATCHではINSERTREPLACEUPDATEDELETEサポートされています。

BATCH構文は、列に基づいてDML文を複数の実行範囲に分割します。各範囲では、1つのSQL文が実行されます。

使用方法および制限事項の詳細については、 非トランザクションDMLステートメント参照してください。

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 とは互換性がありません。

参照

BATCH最終更新日 12/6/2022, 10:24:04 AM: add content about nt-dml for insert and update (#11449)

このページは役に立ちましたか?