2011-08-06 15 views
2

私は2つのテーブルの質問の回答を持っています。 答えはキー* question_id *私が質問を作成すると、私は答え質問テーブルと複数のレコードに1つのレコードを挿入LAST_INSERT_IDを1つのクエリの1対多の関係で使用するにはどうすればよいですか?

テーブルが含まれています。 LAST_INSERT_ID()などを使用してこれを1つのクエリで行うことは可能ですか?

I.e.

INSERT INTO questions VALUES(NULL, 'My question'); 

INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 1'); 
INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 2'); 
INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 3'); 

LAST_INSERT_ID()はすべてのステートメントの後で変更されるため、このクエリは機能しません。とにかくこの作業を行うには、またはこれを2つのクエリに分割する必要がありますか?

答えて

5

あなたはこのように一括挿入を使用することができます。

INSERT INTO answers VALUES 
      (NULL, LAST_INSERT_ID(), 'Answer 1') , 
      (NULL, LAST_INSERT_ID(), 'Answer 2') , 
      (NULL, LAST_INSERT_ID(), 'Answer 3'); 
+0

ありがとう!これは完璧に動作します! = D –

+0

私はこれについて知らなかった。私は後でそれを試してみる...:D –

1

は、変数

INSERT INTO questions VALUES(NULL, 'My question'); 
SET @id = (SELECT LAST_INSERT_ID()); 
INSERT INTO answers VALUES(NULL, @id, 'Answer 1'); 
INSERT INTO answers VALUES(NULL, @id, 'Answer 2'); 
INSERT INTO answers VALUES(NULL, @id, 'Answer 3'); 

にド値を格納するようにしてください、私はそれを行うための別の方法があると思いますが、多分それはあなたのアイデアを与えるだろう。

+0

を、これは多分動作しますが、Sabeensのanwerは明らかである私が探していたもの。 –

+1

はい...最適なオプションです。 LAST_INSERT_IDで一括挿入を使用できるかどうかはわかりませんでした。 :D –

関連する問題