タグ

Updateに関するa20130517のブックマーク (3)

  • MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary

    先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結

    MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary
  • 別テーブルのデータを使って更新 - 丸いタイヤを四角く作る日記

    TableAの値をTableBの値で更新する時に、色々ハマったのでメモ 複数テーブルを参照するUPDATE文は... UPDATE TableA, TableB SET TableA.col1 = TableB.col2 WHERE TableA.key = TableB.colKey; TableBは更新しないけどSETで関連付けるために書く必要があるみたい、作法みたいなものかな。 あとはSELECT文と同じ感じで。 MySQLWorkBenchで実行してみたら... エラーになって以下のメッセージが表示されてた。 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mo

    別テーブルのデータを使って更新 - 丸いタイヤを四角く作る日記
  • MySQL/SELECT結果でUPDATEする - 俺の基地

    別テーブルの値を使ってデータの一部の値を洗い替えたい タイトルはSELECT結果でUPDATEですがMySQLではそれができません。 でも「SELECT結果でUPDATE」したい場合って、別テーブルの値を使ってデータの一部の一括して値を洗い替えたい状況がほとんどだと思いますので・・・ MySQLのUPDATE構文はそういうことができるようになっている。簡単に言うとデータソースが2つある半分SELECT構文のようなUPDATE文が書ける UPDATE A, B SET A.name = B.name WHERE A.id = B.id こんな感じ。 これだとテーブルA上のレコードとB上のレコードでidが合致するもののnameをBの値で書き換えるということになる。 解釈順番とか考えるとこんがらがってくるが集合として考えると・・・まぁ納得できるかな。 Oracleとかはupdateでもse

  • 1