Hatena::ブログ(Diary)

bushimichiの日記 RSSフィード

この日記のはてなブックマーク数

2009-10-30

MySQLの書き順による、カラムの処理順序

| 00:09 | MySQLの書き順による、カラムの処理順序を含むブックマーク

MySQL系で以下の update文を実行して驚いた!

table xxxxx

pkeycol1col2
1aaaaaccccc

上記のようなテーブルにデータがある場合に以下のSQLを実行すると

update xxxxx set
  col2 = col1
 ,col1 = 'bbbbb'
where
  pkey = 1
;  

以下のように更新される

pkeycol1col2
1bbbbbaaaaa

ところが、SQL文を以下のように書き換えると



update xxxxx set
  col1 = 'bbbbb'
 ,col2 = col1
where
  pkey = 1
;  

結果がこうなる。

pkeycol1col2
1bbbbbbbbbb

えええええええ、そうなの????

pkeycol1col2
1bbbbbaaaaa

じゃないの???


PostgreSQLだと、同一クエリー内で書き順は関係なく

並列に処理されましたが、MySQLの場合はそうではないんですね。

書いた順番のカラムごとに処理をしていくから、

下位の処理は上位の処理の影響をもろに受ける。

処理は並列ではなく直列でした。


知らなかった。。。。


今まで書いてたSQL文に一抹の不安を覚えた。

トラックバック - http://d.hatena.ne.jp/bushimichi/20091030/1256828976