2

我试图创建一个标准函数来插入产品或添加现有产品的数量,到目前为止我有这个:

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 中没有真正的经验。请问有什么帮助吗?

4

1 回答 1

1

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

这里有很多类似的问题(例如看这里)或谷歌搜索'postgres upsert'。

于 2013-06-06T06:35:29.763 回答