PHPでDBのレコードの1行コピーの作り方

PHPとMySQLデータベースについて PHP/MySQL

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
タイトルとURLをコピーしました