2011-04-03 4 views
1

二つのテーブルに差分値を挿入MySQLは...私は2つのテーブルを持って、私の環境のトランザクションが許可されている

表A - ID +名前

表B - ID +値A +バリューB + IDTABLE A

私は一度に値を挿入するためにクエリを書く方法を知っているかもしれませんか?それは単一のクエリ内で行うことができることを願って...ちょうどパフォーマンスが最大の関心事です。

+0

こんにちは、あなたはどのようにそうするのと同じテーブルを作成しようとしているイム...?あなたはSQLを入れてくださいできますか...ありがとう – Loshi

+0

@Loshi、以下の質問は私のためにちょうど正しい答えです=)と私はちょうど内容を少し編集している間にコードです^^ – 1myb

+0

nopeメイト私は別々にユーザーの詳細とユーザーpwと名前を置くためにtable1テーブル2として2つのテーブルを作成したい。なぜ私はテーブルを作成する方法を望んでいたのですか? – Loshi

答えて

2
mysql_query("BEGIN"); 

$result_1 = mysql_query("INSERT INTO table_a ('name') values ('Chris')"); 

if(! $result_1) { 
    mysql_query("ROLLBACK"); 
    die(); // or handle the error however you choose 
} 

$table_1_id = mysql_insert_id(); 
$result_2 = mysql_query("INSERT INTO table_b ('value_a', 'value_b', 'table_a_id') values ('v1', 'v2', $table_1_id)"); 

if(! $result_2) { 
    mysql_query("ROLLBACK"); 
    die(); // or handle the error however you choose 
} 

mysql_query("COMMIT"); 
+0

これはより安全で高性能なD Thx ^^ – 1myb

+0

@Spencer問題ありません。あなたがPHPを指定しなかったという回答を投稿した後に実現しましたが、プリンシパルは同じです。 – Chris

+0

@chris大丈夫です、心配= Dあなたの解決策はわかりやすいので^ – 1myb

2

単一のクエリで異なるテーブルに挿入することはできません。

insert into tableA (name) values ('name'); 
set @last = last_insert_id(); 
insert into tableB (valueA,valueB,idtableA) values ('valueA','valueB',@last); 
+0

これも正しいですが、トランザクションセーフなクエリではありません> _ < – 1myb

関連する問題