2012-04-19 66 views
57

Tôi có một chút mới đối với postgres. Tôi muốn lấy một giá trị (là một số nguyên) trong một trường trong một bảng postgres và tăng nó bằng một. Ví dụ, nếu bảng 'tổng số' có 2 cột, 'tên' và 'tổng', và Bill có tổng cộng là 203, thì câu lệnh SQL nào tôi muốn sử dụng để chuyển tổng số của Bill là 204?Tăng giá trị trong Postgres

Trả lời

116
UPDATE totals 
    SET total = total + 1 
WHERE name = 'bill'; 

Nếu bạn muốn chắc chắn giá trị hiện tại thực sự là 203 (và không phải vô tình tăng nó một lần nữa), bạn cũng có thể thêm điều kiện khác:

UPDATE totals 
    SET total = total + 1 
WHERE name = 'bill' 
    AND total = 203; 
+0

Tôi đã cố gắng để tăng ** phi nguyên ** datatype và nhận: 'ERROR: toán tử không tồn tại: ký tự thay đổi + số nguyên LINE 2: SET total = total + 1' Được giải quyết bằng cách truyền giá trị dưới dạng số nguyên như thế này' SET total = total :: int + 1 ' –

+19

@ Stew-au: Làm *** không *** lưu trữ số trong cột VARCHAR. Điều đó sẽ gây rắc rối cho bạn trong thời gian dài. Sử dụng một số nguyên (hoặc bigint hoặc bất cứ điều gì là phù hợp) nhưng không sử dụng một kiểu dữ liệu ký tự. –

+2

Tuyên bố này có phải là nguyên tử hay tôi sẽ cần bi quan để khóa bảng viết trước? (Nỗi sợ của tôi là ở giữa việc gán tổng và lấy tổng số cho tổng số + 1 một số văn bản đã được thực hiện cho bảng.) – miho

Các vấn đề liên quan