このページは機械翻訳したものです。
MySQL では、CREATE TABLE ... SELECT ステートメントのレプリケート時に次のルールが適用されます:
CREATE TABLE ... SELECTは常に暗黙的コミットを実行します (セクション13.3.3「暗黙的なコミットを発生させるステートメント」)。-
宛先テーブルが存在しない場合、ロギングは次のように行われます。
IF NOT EXISTSが存在するかどうかは重要ではありません。STATEMENTまたはMIXED形式: ステートメントは、書き込まれたものとしてログに記録されます。-
ROW形式: ステートメントは、CREATE TABLEステートメントおよび一連の行挿入イベントとしてログに記録されます。MySQL 8.0.21 より前は、ステートメントは 2 つのトランザクションとしてログに記録されます。 MySQL 8.0.21 の時点では、アトミック DDL をサポートするストレージエンジンでは、1 つのトランザクションとしてログに記録されます。 詳細は、セクション13.1.1「アトミックデータ定義ステートメントのサポート」を参照してください。
CREATE TABLE ... SELECTステートメントが失敗した場合、何も記録されません。 これには、宛先テーブルが存在し、IF NOT EXISTSが指定されていないケースが含まれます。宛先テーブルが存在し、
IF NOT EXISTSが指定されている場合、MySQL 8.0 はステートメントを完全に無視します。何も挿入または記録されません。
MySQL 8.0 では、CREATE TABLE ... SELECT ステートメントで、ステートメントによって作成されたテーブル以外のテーブルを変更することはできません。