0

データベースに2つのテーブルを一度に挿入する可能性があるかどうか疑問に思っています.

$query = sprintf("INSERT INTO table ('tableid')values('somevaleu'),INSET INTO table1 ('table1id')values('somevalue')");

または、次のように個別に行う必要があります。

$query1 = sprintf("INSERT INTO table ('tableid')values('somevaleu')");
$query2 = sprintf("INSET INTO table1 ('table1id')values('somevalue')");

助言がありますか?

4

4 に答える 4

1

なぜこれをやろうとしているのですか?単なる怠惰な場合は、余分な 30 秒を取り、2 つの別々のステートメントを使用してください。OTOH、データベースの一貫性を保つために両方の挿入を同時に行う必要があるためにこれを行いたい場合(たとえば、「注文」テーブルと「請求」テーブルを同時に更新するなど)、調べたい取引

基本的に、トランザクション ( BEGINで始まる) はまとめられた一連のクエリであり、完了したら、COMMITしてそれらを固定するか、ROLLBACKでそれらを破棄することができます (エラーが発生した場合など)。プロセスを中止します)。それらは正確に同時に実行されるわけではありませんが、COMMIT では、すべてが成功するか、いずれも実行されません。

于 2012-06-18T20:27:21.680 に答える
1

If you are using the old mysql extension (mysql_* functions), then you cannot issue multiple queries in one statement.

From the manual1:

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.

If you were using mysqli or pdo mysql then you can do multiple inserts in one query.

It would also be possible to insert multiple rows into the same table in one query using extended inserts, but not two different tables.

于 2012-06-18T20:18:20.983 に答える
0

データベースのクエリ方法によって異なります。私が使用した多くのサードパーティ データベース抽象化ライブラリでは、実行ごとに 1 つの SQL ステートメントしか許可されていません。ただし、MySQLは、提案されているように、セミコロンで区切られた複数のクエリを受け入れることができます。

于 2012-06-18T20:14:22.860 に答える
0

を使用beginして、複数の SQL ステートメントを囲むことができます。

$query = "BEGIN ";
$query .= "INSERT INTO table ('tableid')values('somevalue') INSERT INTO table1 ('table1id')values('somevalue') ";
$query .= "COMMIT";

次に実行し$queryます。

于 2012-06-18T20:13:41.280 に答える