バッチ

BATCH構文は、DML ステートメントを TiDB 内の複数のステートメントに分割して実行します。これは、トランザクションの原子性と分離性が保証されていないことを意味します。したがって、これは「非トランザクション」ステートメントです。

現在、 INSERTREPLACEUPDATE 、およびDELETE BATCHでサポートされています。

BATCH構文は、列に基づいて、DML ステートメントを実行範囲の複数の範囲に分割します。各範囲で、単一の 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 とは互換性がありません。

こちらも参照

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