PostgreSQL记录不存在则插入,存在则更新的作法

表结构以下:sql

假设想要实现当记录存在时account值加1,而记录不存在时插入记录,能够这样来实现:3d

INSERT INTO A (ID, username, account)
VALUES
	(1, 'aa', 0) ON conflict (ID) DO
		UPDATE
	SET account = A .account + 1;

连续执行两次以后能够看到结果:code

第一次记录不存在,因此建立了一条新纪录,并设置account值为0;第二次记录存在,则将account值加1了。blog

不过在执行上述语句以前要确保on conflict操做的字段必须有unique属性或者其余的约束条件,否则就会出现相似于如下的错误:class

相关文章
相关标签/搜索