2010-12-10 18 views
1

この質問は以前に尋ねられ、回答されたようですが、これが可能かどうかはまだ分かりません。複数のmysqlテーブルのユーザーID列を更新する

私は少しこのように、user_idの値の変化を反映するために、9つのテーブルを更新しようとしている:

UPDATE table1, table2, table3, table4 SET 
table1.id='12', table2.id='12', table3.id='12', table4.id='12' 
WHERE table1.id='15' OR table2.id='15' OR table3.id='15' OR table4.id='15' 

が可能ということですか?私は本当に明白な何かを逃しましたか?

答えて

0

InnoDBストレージエンジンは、外部キーのカスケード更新時にサポートを提供します間違いを起こす可能性を最小限に抑えるために9つのクエリ(各テーブルごとに)を使用します(スマートではなく安全にプレイ)

0

UPDATEの構文は、あなたが一度に一つのテーブルを更新できるようです

UPDATE table_name 
SET column1=value, column2=value2,... 
WHERE some_column=some_value 

です。

+0

可能:http://dev.mysql.com/doc/refman/5.0/en/update.html –

+0

あなたは正しいです!それは奇妙なことです。それはまた移植可能ですか?私はwhere句とEXISTSでJOINを使用しましたが、決して2つのテーブルは使用しませんでした。 –

0

updateステートメントはselectと非常によく似ていますので、それを実行できるはずです。

しかし、トリガーを使用することをおすすめします。

0

変更ORANDこれ以外の場合は問題が発生します。 http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

あなたはまた

がへの単一のクエリを破るこの

を検討すべきである - OR更新する他の多くのユーザーID

UPDATE table1, table2, table3, table4 SET 
table1.id='12', table2.id='12', table3.id='12', table4.id='12' 
WHERE table1.id='15' AND table2.id='15' AND table3.id='15' AND table4.id='15' 
+0

それは非常に良い点です!私はそれを逃した...確かに私はそれを逃した...不幸にも純粋に使用して、IDがすべてのテーブルにない(すなわち、これまでのユーザーはテーブル4のエントリを持っていない) – Jon

+0

彼らはなぜSQLステートメントでこれらのテーブルを使用している? –

+0

更新する前に各テーブルにエントリがあるかどうかを確認する必要はありません。 – Jon

関連する問題