1

SQL クエリを実行し、生成された ID を使用して別のテーブルを更新し、すべての行を続行できるかどうか疑問に思っています。

機能するこのSQLクエリがありますが、各行がカードに追加された後、最後に生成されたIDでmerged.cars_idを更新してリンクされるようにする必要があります。通常、私はこれを PHP で行いますが、理想的には、可能であれば MySQL で行いたいと考えています。

主な質問

INSERT INTO cards (first_contact_date, card_type, property_id, user_id)
SELECT first_contact_date, 'P', property_id, user_id FROM merged

次に、一致する行が必要です(大まかに)

 UPDATE merged SET merged.card_id = LAST_INSERT_ID (FROM ABOVE) into the matching record..

このようなことは可能ですか、どうすればできますか?

4

3 に答える 3

2

これを行うにはMySQLトリガーを使用することをお勧めします http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

トリガーは、テーブルの任意のレコードに対して INSERT、DELETE、または UPDATE が実行された後または実行される前に実行される関数です。

あなたの場合、マージされたテーブルを更新するだけのカードで AFTER INSERT を実行する必要があります。そうしないと新しい行の ID にアクセスできないため、AFTER 挿入を確認してください。

カード テーブルの id フィールドが「id」という名前であると仮定すると、コードは次のようになります。

delimiter |

CREATE TRIGGER updating_merged AFTER INSERT ON cards
  FOR EACH ROW BEGIN
    UPDATE merged SET card_id = NEW.id;
  END;
|
delimiter ;
于 2012-07-28T01:13:01.563 に答える
0

ストアド プロシージャをお勧めできますか?

http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

- 編集 -

そうそう、トリガー。この特定の状況については、ジミーが答えを持っています。リンクのためにこの投稿を残します。

于 2012-07-28T01:14:04.340 に答える
0

これを行うためのトリガーを設定します。mysql については、http://dev.mysql.com/doc/refman/5.0/en/triggers.htmlを参照してください。これは、トリガーが処理するように設計されているものです。

于 2012-07-28T01:14:12.730 に答える