次のような JSON データを含むテキスト フィールドがあるとします。
{
"id": {
"name": "value",
"votes": 0
}
}
id
値を見つけてインクリメントするクエリを作成する方法はありvotes
ますか?
必要なJSONデータの更新を取得して、更新されたバージョンを再挿入するだけでよいことはわかっていますが、2つのクエリを実行せずにこれを行う方法はありますか?
このようなタスクでは、単純な古いものSELECT
に続いてUPDATE
(JSON を解析した後、必要な値をインクリメントしてから、JSON をシリアル化して戻す) を使用することに行き詰まっていると思います。
これらの操作を単一のトランザクションでラップする必要があります。InnoDB を使用している場合は、次の使用も検討してSELECT ... FOR UPDATE
ください: http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
これはちょっとした接線ですが、これは MongoDB のような NoSQL データベースが非常に得意とするタイプの操作であることにも言及したいと思います。