1つのテーブルに値を挿入し、1回のmysql呼び出しで別のテーブルを更新することは可能ですか?はいの場合、これは高速ですか、それとも2つの別々の呼び出しを使用する方が高速ですか?
例えば:
table1-車
id-色-ブランド
1-赤-アウディ
2-青-ポンティアック
表2-人
id-名前-最後
1-デイブ-アン
2-ベス-エレーン
テーブルは関連していません
そして、table1の車の色を更新しながら、人々に別の行を追加したいとしましょう。
それは可能ですか?
セマンティクスに関しては、単一のクエリではなくトランザクションを実行する必要があると思います。
すべてのデータが MyISAM の場合は、ここで終了します。ありえません。
すべてのデータが InnoDB である場合、セットアップできるパラダイムが 2 つあります。
START TRANSACTION;
INSERT INTO people ...
INSERT INTO cars ...
COMMIT;
DB セッション内で次の操作を行います。
SET autocommit = 0;
次に、必要なすべてのINSERTを実行してから実行します
COMMIT;
DB 接続を閉じると、すべてがロールバックされます。したがって、頻繁にコミットするようにしてください。
ストアドプロシージャを使用してください...のようなもの...
DROP PROCEDURE IF EXISTS insert_update $$
CREATE PROCEDURE insert_update
(
IN id INT,
IN color VARCHAR(10),
IN name VARCHAR(20)
)
BEGIN
-- do insert
THEN
-- do update
END IF;
注:テーブル自体に関する説得力のある情報を提供しなかったため、クエリを作成していません。