Postgresql 如何从其他表中的自动增量值向表中插入值:postgressql(更新并插入两个表)
我正在尝试从表“tbl\U artc”中的自动增量插入值“artc\U id”将值“stock\U artc”int4插入表“tbl\U stock”: 解决方案:Postgresql 如何从其他表中的自动增量值向表中插入值:postgressql(更新并插入两个表),postgresql,function,auto-increment,insert-update,multiple-tables,Postgresql,Function,Auto Increment,Insert Update,Multiple Tables,我正在尝试从表“tbl\U artc”中的自动增量插入值“artc\U id”将值“stock\U artc”int4插入表“tbl\U stock”: 解决方案: 我无法理解你的密码。但我相信它可以简单得多。提示1:使用INSERT。。。在发生冲突时,请更新…。提示2:使用返回子句。非常感谢,这对我来说真的很有用: CREATE OR REPLACE FUNCTION "public"."update_artc"("_artc_id" int4, "_artc_name" varchar, "
我无法理解你的密码。但我相信它可以简单得多。提示1:使用
INSERT。。。在发生冲突时,请更新…
。提示2:使用返回
子句。非常感谢,这对我来说真的很有用:
CREATE OR REPLACE FUNCTION "public"."update_artc"("_artc_id" int4, "_artc_name" varchar, "_artc_fourn" int4, "_artc_sector" int4, "_stock_min" int4)
RETURNS "pg_catalog"."void" AS $BODY$
-- Routine body goes here...
DECLARE
BEGIN
UPDATE tbl_artc SET
artc_name = _artc_name,artc_fourn=_artc_fourn,artc_sector=_artc_sector
WHERE artc_id = _artc_id ;
IF NOT FOUND THEN
INSERT INTO tbl_artc(artc_name,artc_fourn,artc_sector)
VALUES
(_artc_name,_artc_fourn,_artc_sector);
END IF;
UPDATE tbl_stock
SET stock_qt_min_alert = _stock_min
WHERE stock_id_artc=_artc_id;
IF NOT FOUND THEN
INSERT INTO tbl_stock(stock_id_artc,stock_qt_artc,stock_qt_min_alert)
VALUES
(artc_id,0,_stock_min);
END IF;
RETURN;
END$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
CREATE OR REPLACE FUNCTION "public"."update_artc"("_artc_id" int4, "_artc_name" varchar, "_artc_fourn" int4, "_artc_sector" int4, "_stock_min" int4)
RETURNS "pg_catalog"."void" AS $BODY$
-- Routine body goes here...
DECLARE tableId integer;
BEGIN
UPDATE tbl_artc SET
artc_name = _artc_name,artc_fourn=_artc_fourn,artc_sector=_artc_sector
WHERE artc_id = _artc_id ;
IF NOT FOUND THEN
INSERT INTO tbl_artc (artc_name,artc_fourn,artc_sector) VALUES (_artc_name,_artc_fourn,_artc_sector) RETURNING artc_id INTO tableId;
END IF;
UPDATE tbl_stock
SET stock_qt_min_alert = _stock_min
WHERE stock_id_artc=_artc_id;
IF NOT FOUND THEN
INSERT INTO tbl_stock (stock_id_artc,stock_qt_artc,stock_qt_min_alert) VALUES (tableId,0,_stock_min);
END IF;
RETURN;
END$BODY$
LANGUAGE plpgsql VOLATILE
COST 100