108 我对Postgres有点陌生。我想在postgres表的字段中获取一个值(它是整数)并将其递增1。例如,如果表“总计”有2列,即“名称”和“总计”,而Bill总共有203列,那么我将使用什么SQL语句将Bill的总数移动到204? postgresql increment — 大威特诺斯 source
209 UPDATE totals SET total = total + 1 WHERE name = 'bill'; 如果要确保当前值确实为203(并且又不小心将其增加),则还可以添加另一个条件: UPDATE totals SET total = total + 1 WHERE name = 'bill' AND total = 203; — a_horse_with_no_name source 1 我试图增加非整数数据类型并得到:ERROR: operator does not exist: character varying + integer LINE 2: SET total = total + 1 通过将值转换为整数来解决,例如SET total = total::int + 1 — Stew-au 2012年 33 @炖-AU:做不存储在varchar列中的数字。从长远来看,这将给您带来麻烦。使用整数(或bigint或任何合适的值),但不要使用字符数据类型。 — a_horse_with_no_name 2012年 4 这条语句是原子的还是我需要悲观地锁定表才能首先进行写入?(我担心在为总数+ 1分配总数与提取总数之间,已经在表中做了一些写操作。) — miho 9 在关系数据库中,单个语句始终是原子的。但是,运行更新不会阻止其他人在提交事务之前读取旧值 — a_horse_with_no_name 3 对于UPSERT看到dba.stackexchange.com/questions/161127/... — iElectric
ERROR: operator does not exist: character varying + integer LINE 2: SET total = total + 1
通过将值转换为整数来解决,例如SET total = total::int + 1