将检查 PostgreSQL 数据库的 2 个属性然后验证以将其保存在数据库中的存储函数
Stored function that will check 2 attributes of the PostgreSQL database and then verify to save it in database
我想创建一个 PostgreSQL 函数(存储过程)以在我的数据库中验证 idnum
和 myear
是否已经存在。示例:idnum=111
和 myear=2015
。如果 idnum
不存在,它将自动 INSERT
数据库中的 idnum
和 myear
。如果 idnum
存在而相应的 myear
不存在,它也会保存在数据库中。但是如果 idnum
和 myear
都已经存在,它将更新数据库。这是我的示例函数代码。
CREATE OR REPLACE FUNCTION pl_bryan(mid integer, mmyear integer)
RETURNS SETOF bryans AS
$BODY$
DECLARE
hh_num integer;
hh_yr integer;
BEGIN
hh_num := (SELECT idnum FROM bryans WHERE idnum=);
hh_yr := (SELECT myear FROM bryans WHERE myear=);
IF hh_num IS NULL THEN
INSERT INTO bryans(idnum,myear) VALUES (,);
ELSIF hh_num IS NOT NULL AND hh_yr IS NULL THEN
INSERT INTO bryans(idnum,myear) VALUES (,);
ELSE
END IF;
END;
$BODY$ LANGUAGE plpgsql;
你能帮我解决我的问题吗?
不清楚您想从您的函数中 RETURN
什么,所以我会把它留在这里。您提出的问题的解决方案如下:
CREATE FUNCTION pl_bryan (mid integer, mmyear integer) RETURNS VOID AS $BODY$
BEGIN
PERFORM * FROM bryans WHERE idnum = mid AND myear = mmyear;
IF FOUND THEN
-- Both values found in one record, so do the UPDATE, unclear how you want that done
ELSE
-- The combination is not found, so INSERT it
INSERT INTO bryans (idnum, myear) VALUES (mid, mmyear);
END;
END;
$BODY$ LANGUAGE plpgsql;
我想创建一个 PostgreSQL 函数(存储过程)以在我的数据库中验证 idnum
和 myear
是否已经存在。示例:idnum=111
和 myear=2015
。如果 idnum
不存在,它将自动 INSERT
数据库中的 idnum
和 myear
。如果 idnum
存在而相应的 myear
不存在,它也会保存在数据库中。但是如果 idnum
和 myear
都已经存在,它将更新数据库。这是我的示例函数代码。
CREATE OR REPLACE FUNCTION pl_bryan(mid integer, mmyear integer)
RETURNS SETOF bryans AS
$BODY$
DECLARE
hh_num integer;
hh_yr integer;
BEGIN
hh_num := (SELECT idnum FROM bryans WHERE idnum=);
hh_yr := (SELECT myear FROM bryans WHERE myear=);
IF hh_num IS NULL THEN
INSERT INTO bryans(idnum,myear) VALUES (,);
ELSIF hh_num IS NOT NULL AND hh_yr IS NULL THEN
INSERT INTO bryans(idnum,myear) VALUES (,);
ELSE
END IF;
END;
$BODY$ LANGUAGE plpgsql;
你能帮我解决我的问题吗?
不清楚您想从您的函数中 RETURN
什么,所以我会把它留在这里。您提出的问题的解决方案如下:
CREATE FUNCTION pl_bryan (mid integer, mmyear integer) RETURNS VOID AS $BODY$
BEGIN
PERFORM * FROM bryans WHERE idnum = mid AND myear = mmyear;
IF FOUND THEN
-- Both values found in one record, so do the UPDATE, unclear how you want that done
ELSE
-- The combination is not found, so INSERT it
INSERT INTO bryans (idnum, myear) VALUES (mid, mmyear);
END;
END;
$BODY$ LANGUAGE plpgsql;