108 私はpostgresに少し慣れていません。postgresテーブルのフィールドに値(整数)を取り、それを1つ増やしたいのですが。たとえば、テーブル 'totals'に 'name'と 'total'の2つの列があり、Billの合計が203である場合、Billの合計を204に移動するために使用するSQLステートメントは何でしょうか? postgresql increment — 素晴らしい ソース
209 UPDATE totals SET total = total + 1 WHERE name = 'bill'; 現在の値が確かに203であることを確認したい場合(そして誤って再度値を増やしたくない場合)、別の条件を追加することもできます。 UPDATE totals SET total = total + 1 WHERE name = 'bill' AND total = 203; — 名のない馬 ソース 1 私は非整数データ型をインクリメントしようとしていてERROR: operator does not exist: character varying + integer LINE 2: SET total = total + 1 、次のように取得していました:このような整数として値をキャストすることで解決しましたSET total = total::int + 1 — Stew-au 33 @ Stew-au:varchar列に数値を格納しないでください。それは長期的にはあなたにトラブルをもたらすでしょう。整数(またはbigintまたは適切なもの)を使用しますが、文字データ型は使用しません。 — a_horse_with_no_name 2012年 4 このステートメントはアトミックですか、それとも書き込みのために最初にテーブルを悲観的にロックする必要がありますか?(私の恐れは、合計を割り当てることと合計+ 1の合計をフェッチすることの中間で、テーブルにいくつかの書き込みが行われたことです。) — miho 9 リレーショナルデータベースでは、単一のステートメントは常にアトミックです。ただし、更新を実行すると、他の人を防ぐことはできません読んで、あなたのトランザクションがコミットされるまで、古い値を — a_horse_with_no_name 3 アップサートについては、dba.stackexchange.com / questions — 161127
ERROR: operator does not exist: character varying + integer LINE 2: SET total = total + 1
、次のように取得していました:このような整数として値をキャストすることで解決しましたSET total = total::int + 1