2012-02-29 20 views
1

からUPDATE:同じクエリでINSERT INTO ... SELECT、およびSELECT

INSERT INTO some_table (col1, col2, col3) 
    SELECT otbl.col4, obtl.col5, atbl.col6 FROM other_table otbl 
    INNER JOIN another_table atbl 
     ON atbl.id = otbl.some_id 
    WHERE obtl.col7 = 0; 

を、私はSELECTが一致どこcol7 = 1 "に切り替える" にしたいです。可能?

+0

あなたはsome_tableにあなたの挿入が発生したときに、あなたの文は1にUPDATEのobtl.col7を_also_したいというあなたにぴったりのI理解していますか?のようなother_tableにトリガーを作成しますか。 – yhw42

+0

@ yhw42、はい!正確に。 INSERTはWHERE obt1.col7を使用しなければなりません。 – Kyle

+0

... hmmm "2つのクエリ+トランザクション"キャンプで傘を使っています...なぜそれがあなたにとってうまくいかないのか説明できますか? – yhw42

答えて

3

回答はNoと思います。彼らの詳細を選択しながらユーザーのログイン時間を更新するのと同じようなことをしたいと思っています。あなたのケースでは、更新が2番目になる2つのクエリが必要です。それらの間に何も起こらないようにする必要がある場合は、トランザクションを検討してください。

+0

+1に設定する条件を設定しますが、テーブルが大きくなると、1つのクエリは常に2より優れています。あなたはおそらく正しいでしょう。ちょっとしたことのために質問を開いたままにしておきます。 – Kyle

1

other_table

CREATE TRIGGER other_Trigger 
AFTER insert ON some_table 
FOR EACH ROW 
BEGIN 
update other_table set col7=1 where some.id=new.id 
END 
関連する問題