57
私はポストグレースに少し新しくなりました。私は、postgresテーブルのフィールドに値(整数)をとり、1だけインクリメントしたいと考えています。たとえば、 'totals'テーブルに2つのカラム 'name'と 'total'があり、Billの合計が203だった場合、Billの合計を204に移動するために使用するSQL文は何でしょうか?Postgresで値をインクリメント
私はポストグレースに少し新しくなりました。私は、postgresテーブルのフィールドに値(整数)をとり、1だけインクリメントしたいと考えています。たとえば、 'totals'テーブルに2つのカラム 'name'と 'total'があり、Billの合計が203だった場合、Billの合計を204に移動するために使用するSQL文は何でしょうか?Postgresで値をインクリメント
UPDATE totals
SET total = total + 1
WHERE name = 'bill';
あなたは現在の値が実際に203であることを確認してください(と誤って再びそれを増加させない)にしたい場合は、また別の条件を追加することができます。
UPDATE totals
SET total = total + 1
WHERE name = 'bill'
AND total = 203;
私は**非整数をインクリメントしようとしていました**データ型と取得中: 'ERROR:演算子は存在しません:文字可変+整数 LINE 2:SET合計=合計+1 ' このような値を整数としてキャストして解決します。SET total = total :: int + 1 ' –
@ Stew-au:varcharカラムに数字を格納しないでください***。それはあなたに長期的にトラブルを与えるでしょう。整数(またはbigintなど)を使用しますが、文字データ型は使用しないでください。 –
この文はアトミックであるか、最初に書き込みのためにテーブルを悲観的にロックする必要がありますか? (私の恐怖は、合計を割り当てることと、合計+1のために合計を取り出すことの間に、何らかの書き込みが行われたことです。) – miho