2012-04-10 6 views
0

を挿入するにはシナリオです: 私は2つのテーブルと2つの一時テーブルを持っています。公式テーブルにユーザーデータを挿入する前に、それらをチェックするために一時テーブルに挿入します。会社情報付きのcompanyテーブルと、連絡先情報を持つcontactテーブルがあります。 contactテーブルにはcompanyテーブルの外部キーインデックスであるcompany_idというフィールドがあります。MySQLの - ここでは、外部キーインデックスとに

一時テーブルは、同じように設定されています。私はこのような文を使用してcompanyテーブルの上に新たに挿入されたIDにtemp_companyから外部キーを転送しないか、INSERT INTO company() SELECT * FROM temp_company;INSERT INTO contact() SELECT * FROM temp_contact

私の質問は次のとおりです。

は、私のような何かをしたいですか?それを行う方法はありますか?

現在、私は:

  1. は一時行
  2. を1つずつ行くと新しい最後のインサートIDで、その後連絡先を挿入し、その後、最後のインサートID
  3. をつかんで、彼らに
  4. を挿入つかん

ことが最も効率的な方法であれば私は知りません。ありがとう!

答えて

0

あなたは両方のテーブルの列の数が同じで、その後、あなたはちょうどあなたがそこに持っている構文を使用することができるはずですか?ちょうど()を取り出してください。

INSERT INTO company SELECT * FROM temp_company; 
INSERT INTO contact SELECT * FROM temp_contact; 

また具体的には、あなたが新しいIDとして挿入した列を正確に指定することができ、このように挿入されます列を指定することができます:ちょうど重複主キーがないことを確認してください。

正しい列数を選択していることを確認してください。

+0

唯一の問題は、空のテーブルに一時テーブルのデータを設定していないことです。私は、既にたくさんのデータを持っているテーブルに行を追加しています。 –

+0

正しく挿入する前に重複するキーがあるかどうかわからないという問題はありますか?この場合、あなたは何をしたいかに応じて、 'INSERT ... ON DUPLICATE KEY UPDATE'または' INSERT ... ON DUPLICATE KEY INGNORE'構文を使うことができます。 –

関連する問題