SQL小技
最近SQLを書くことが多いので学んだことをまとめたいと思います。
2つのテーブルを更新したい
勝手な認識でupdate文は1つのテーブルに対し行うものだと思ってました。
しかし以下のように2つのテーブルに対して実行することができます。
update users u, players p set u.id=1, p.user_id=1 where u.name="piiice" and p.name="piiice"
こんな感じです。
SQLを間違えてしまった…
間違いは誰にでもある。にんげんだもの。
とはいえ、SQLの間違いはとってもやばいです。(語彙力)
こんな時に役に立つのがbegin, rollback, commitです。
begin, rollback, commitは制御構文といってcrud操作の中でもupdate, deleteで使うことが多いです。
これを用いるとsqlで加えた変更をなしにできることができます。
例はこちらです。
-- 1 begin; -- 2 update user set id=1, name="piiice"; -- 3 select * from user; -- rollback; -- 4 -- commit; -- 5
まず1を実行します。
次に2のupdateを実行します。この時点でDB自体の値は変わっていません。
3で2のupdateが正しいかどうか確認します。<- ここ小技!
もし間違いがあれば4を実行し、updateをなかったことにします。
間違がなければ5を実行し、値の更新を受け入れます。
これでSQLコワクナイ