ついにトランザクションできたのにYou can't specify target tableされた
You can't specify target table
You can't specify target table 'x' for update in FROM clause UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);
updateの対象とサブクエリのfromに同じテーブルが入ってるとエラーになるらしい
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.10.9 サブクエリーのエラー
mysqlの-eオプションで操作前後を簡単に比較する
-eオプション:ターミナルからSQLを実行できる
$ mysql -u hoge -p -e 'select ~~~'
的な
さらにこれをいろいろ組み合わせて
# 対象をselectしてテキストに保存 $ mysql -u hoge -p -e 'select ~~~' > before.txt # mysqlでデータ操作する mysql> update ~~~ # 再度同じselectを別のファイルに保存 $ mysql -u hoge -p -e 'select ~~~' > after.txt $ diff before.txt after.txt
ってやるとupdate前後を簡単に比較できるよ!
という話
だけどdiffが微妙なのでdiffの仕方を変えるか
add columnで他の定義変わってないよね〜の確認にはいいかもしれない
というのを教えていただきましたというメモ!!
あとupdate文はトランザクションできる!!やったね!!