PHPとMySQLでデータを追加すると、特定のテーブル内の全レコードを別テーブルにコピーすることは出来るのでしょうか?


希望内容として
・Aのテーブルには10件のデータが入っている
・Bのテーブルにレコードを追加すると、AのテーブルにあるすべてのデータがBAテーブルにコピーされる

いくつか方法があると思いますが、出来るだけシンプルで汎用性の高いコードはないものかと思い、質問しました。

ちなみにPHPは5.2.0をMySQLは4.0.26を使っています。

回答の条件
  • 1人2回まで
  • 登録:2007/12/15 17:53:29
  • 終了:2007/12/16 13:12:15

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/12/15 20:11:35

ポイント10pt

出来るだけシンプルで汎用性の高いコードはないものか

ない。

希望のことを MySQL でやろうとすればトリガーを使うしかないが、5系からのサポートの上RDBMSごとにやり方が違う。


すなおにPHP側でそういうことをまとめてやる function を作るぐらいしか。

id:kt26

>>すなおにPHP側でそういうことをまとめてやる function を作るぐらいしか。


なるほど。functionやwhileを使って1件ずつレコードを新テーブルに追加する方法は思いつくのですが、それ以外無いかと思い、質問しました。

「ない」と言われればそれまでですが、、念のため終了まで他者の回答をお待ちしたいと思います。

2007/12/15 20:52:20
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/12/15 21:21:46

ポイント100pt

1件ずつレコードを新テーブルに追加する方法

1件ずつやらないだけならある。


MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.4.3.1 INSERT ... SELECT 構文

INSERT INTO BA SELECT * FROM A ;

テーブル A と BA が構造が同じならこれで。違うならカラムを指定して。

ただ、これを実行するタイミング(B の更新時とか)はあくまで PHP 側でしかできない。

id:kt26

上手くできました。こういうやり方があるんですね。


カラム指定したら異なるテーブル同士でもコピー出来ますし、非常に便利だと思います。

回答ありがとうございました。

2007/12/16 13:11:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません