CREATE TEMPORARY TABLE
CREATE TEMPORARY TABLE は、MyAQLでレコードをコピーして修正したいときなどに使います。
コピーのためには、一時的に生成されるテーブル tmp_table を作ります。同じテーブル内にレコードの複製を作るので、プラマイリIDをプラス1して増やし、そこにコピーした情報を書き込みします。
流れ
- ①同一セッション内でのみで使用されるテーブル(TMPPORARY TABLE 以下 TT)を生成
- ②TTに対象のテーブルのDDL(構造)をコピー
- ③複製したいレコードをTTに挿入
- ④idを対象テーブルの最大値より1増やす
- ⑤TTのレコードを対象のテーブルに追加
- ⑥TTが削除される
// moto_table :元になるテーブル
// tmp_table :一時的につくられるテーブル
"CREATE TEMPORARY TABLE tmp_table LIKE moto_table;";
"INSERT INTO tmp_table SELECT * FROM moto_table WHERE id = {$id} ;";
"UPDATE tmp_table set id = (SELECT MAX(id) FROM moto_table) + 1;";
"INSERT INTO moto_table SELECT * FROM tmp_table;";
一時的につくられるテーブル は、保存後に削除されます。
詳しくはMySQLの公式解説にあるので参照。
MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.2 CREATE TEMPORARY TABLE Statement