将检查 PostgreSQL 数据库的 2 个属性然后验证以将其保存在数据库中的存储函数

Stored function that will check 2 attributes of the PostgreSQL database and then verify to save it in database

我想创建一个 PostgreSQL 函数(存储过程)以在我的数据库中验证 idnummyear 是否已经存在。示例:idnum=111myear=2015。如果 idnum 不存在,它将自动 INSERT 数据库中的 idnummyear。如果 idnum 存在而相应的 myear 不存在,它也会保存在数据库中。但是如果 idnummyear 都已经存在,它将更新数据库。这是我的示例函数代码。

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;