0

2つ以上のテーブルにデータを挿入するにはどうすればよいですか?

現在、私はこのトリックを使用しています。(構文が正しいと仮定しましょう)

$Sql1 = "insert into user";
$Sql2 = "insert into files";
$Sql3 = "insert into messages";

query $Sql1
query $$ql2
query $Sql3

だから私はこれを使っており、最適化する必要があります。

また、外部キーを使用する必要があると思いますか?しかし、phpmyadminでそれを行う方法がわかりません。

そして最後に:

これが私が欲しいすべてです。

「user」テーブルにデータを挿入し、自動的にテーブル「messages」と「files」にもユーザーと同じIDを設定するには、コードで3つのクエリを使用します。

私を助けてください。

前もって感謝します!

myb

4

3 に答える 3

3

複数のクエリを使用することはまったく問題ありません。

ただし、3つのクエリを1つのトランザクションにラップする必要があります。つまり、1つのクエリが何らかの理由で失敗した場合、以前のすべてのクエリ(存在する場合)の影響をロールバックして、データベースを一貫した状態に保つことができます。

注:MySQLのMyISAMテーブルではトランザクションはできません。さらに、トランザクションを使用できるようにするには、PHPのMysqli(またはPDO )を使用する必要があります。(高レベルのデータベース抽象化レイヤーを使用していないと思います。)

外部キーに関する質問について:私の知る限り、データベース内のテーブルにMyISAMエンジンを使用している場合(私が推測します)、MyISAMは外部キーの明示的なモデリングさえサポートしていないため、違いはありません。キー。ただし、InnoDBのような他のテーブルエンジンは、外部キーを使用して、「メッセージは常に既存の人に関連付けられている必要がある」などの特定の制約をチェックできます。

外部キーに関するいくつかの良い例を次に示します。http ://www.postgresql.org/files/documentation/books/aw_pgsql/node131.html

于 2011-09-19T10:50:33.383 に答える
1

mysqlを使用すると、uはLAST_INSERT_ID()またはphp mysql_insert_id()関数を使用できます。このマニュアルエントリをチェックアウトします。

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

http://php.net/manual/en/function.mysql-insert-id.php

于 2011-09-19T11:00:47.497 に答える
1

これが答えだと思います:http://dev.mysql.com/doc/refman/5.1/en/example-foreign-keys.html

于 2011-09-19T10:54:01.057 に答える