ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2012年8月8日水曜日

mysqlで複数行のあるカラムをインクリメントしつつ更新


> set @incr = 1;
> update some_table set some_column = @incr := @incr+1;


8.4. ユーザによって定義された変数
http://dev.mysql.com/doc/refman/5.1/ja/user-variables.html

というかそのまんまの内容があった。。

Set iterative values in rows of a table
http://stackoverflow.com/questions/6352705/set-iterative-values-in-rows-of-a-table

2012年3月9日金曜日

MySQL トランザクション中のWHERE句無しのDELETE文

・mysqlではWHERE句の無いDELETEをTRUNCATEとして処理する。
・TRUNCATEはトランザクションセーフでない(>トランザクション中に実行するとエラー)
・ただしWHERE句無しDELETEはトランザクション中でも使える。

これはどういうことか確認。

マニュアルでは、AUTOCOMMITモード(つまりtransactionのbegin - commit(rollback)内でない)場合はTRUNCATEと同様に働くとのこと。
WHERE 節が指定されていない DELETE では、すべてのレコードが削除されます。AUTOCOMMIT モードで実行された場合、WHERE 節なしの DELETE は TRUNCATE と同じように動作します。
MySQL4.1 リファレンス6.4.5. DELETE 構文

つまりトランザクション中のWHERE句なしDELETEは、TRUNCATEに置き換わらず、通常のDELETEとして処理されるということか。

上記リファレンスの文面が MySQL5.1ではDELETEにもTRUNCATEにも載ってなくてちょっと混乱した。