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

相關文章
相關標籤/搜索