我正在尝试创建一个标准函数来插入产品或添加现有产品的数量,到目前为止,我有以下内容:
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方面并没有真正的经验。有什么需要帮忙的吗?
发布于 2013-06-06 14:35:30
在'ELSE‘之前和'END IF’之前应该有分号(除了打开一个块的语句之外,所有语句后面都需要分号。参见documentation)。您可能仍然希望添加异常处理,因为如果在material列上使用唯一索引,并且多个会话将尝试同时添加相同的材料,则插入可能会失败。
这里有很多类似的问题(例如,看看here )或者谷歌的“postgres upsert”。
https://stackoverflow.com/questions/16954736
复制相似问题