首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INSERT OR UPDATE过程Postgres 9.2

INSERT OR UPDATE过程Postgres 9.2
EN

Stack Overflow用户
提问于 2013-06-06 14:04:28
回答 1查看 1.6K关注 0票数 2

我正在尝试创建一个标准函数来插入产品或添加现有产品的数量,到目前为止,我有以下内容:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION insert_materials (IN _ASADAFK  VARCHAR(40), _material   VARCHAR(40), _stock INT)
RETURNS void AS
$$
BEGIN 
  IF EXISTS (SELECT material FROM materials WHERE material= _material)
  THEN
    update materials set stock= (stock + _stock) where material=_material

  ELSE 
    INSERT INTO "materials" VALUES(_ASADAFK,_material,_stock)
END IF;
END;
$$ 
LANGUAGE 'plpgsql';

我在ELSE附近遇到了一个语法错误,我已经尝试了几种方法,但在PostGres方面并没有真正的经验。有什么需要帮忙的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 14:35:30

在'ELSE‘之前和'END IF’之前应该有分号(除了打开一个块的语句之外,所有语句后面都需要分号。参见documentation)。您可能仍然希望添加异常处理,因为如果在material列上使用唯一索引,并且多个会话将尝试同时添加相同的材料,则插入可能会失败。

这里有很多类似的问题(例如,看看here )或者谷歌的“postgres upsert”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16954736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档