35

と の 2 つのテーブルがnamesありphones、ある入力から 1 つのクエリでテーブルにデータを挿入したいとします。どうすればそれができますか?

4

6 に答える 6

68

できません。ただし、トランザクションを使用して、両方を 1 つのトランザクションに含めることはできます。

START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;

http://dev.mysql.com/doc/refman/5.1/en/commit.html

于 2010-10-05T01:34:39.040 に答える
19

MySQL は、単一のINSERT ステートメントでの複数テーブルの挿入をサポートしていません。オラクルは、奇妙なことに、私が知っている唯一のものです...

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
于 2010-10-05T01:32:42.400 に答える
3

私も同じ問題を抱えていました。for ループで解決します。

例:

ループを使用して、2つの同一のテーブルに書き込みたい場合

for x = 0 to 1

 if x = 0 then TableToWrite = "Table1"
 if x = 1 then TableToWrite = "Table2"
  Sql = "INSERT INTO " & TableToWrite & " VALUES ('1','2','3')"
NEXT

また

ArrTable = ("Table1", "Table2")

for xArrTable = 0 to Ubound(ArrTable)
 Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT

クエリが小さい場合、これが最善の解決策かどうかはわかりませんが、クエリが非常に大きく、if/else/case 条件を持つ動的スクリプト内にある場合、これは良い解決策です。

于 2013-05-02T07:06:47.353 に答える