如果记录存在则创建函数然后什么都不做 运行 postgres 中的一些代码

Create function if records exist then do nothing else run some code in postgres

我需要 运行 一个可以 运行 一堆 INSERT 查询的函数。唯一的事情是我需要确保这个过程还没有发生。问题是我的 if then 语句中的语法不太正确。

CREATE OR REPLACE FUNCTION process.copyhalsetup_tonewitem(
integer,
integer)
RETURNS void AS
$BODY$
DECLARE

pItemID_Copy_From   ALIAS FOR ;
pItemID_Copy_Too    ALIAS FOR ;

BEGIN

IF SELECT EXISTS(SELECT 1 
FROM process.rmt_revs 
WHERE rmt_revs.item_id =  pItemID_Copy_Too) THEN
 raise notice 'a record exists. Code not executed';
 ELSE
 --a slew of INSERT statements
END IF



END;
$BODY$
 LANGUAGE plpgsql VOLATILE
  COST 100;
  ALTER FUNCTION process.copyhalsetup_tonewitem(integer, integer)
  OWNER TO postgres;
COMMENT ON FUNCTION process.copyhalsetup_tonewitem(integer, integer) IS 'This function is used to copy from an existing item HAL data to a new like item for which there may be a new item rev or item number change.  CAUTION: Only use this for NON-FAMILY MOLDS!!!';

尝试:

IF (SELECT count(1) 
FROM process.rmt_revs 
WHERE rmt_revs.item_id =  pItemID_Copy_Too) > 0 THEN

否则,如果您想要 EXISTS,请添加方括号:

IF (SELECT EXISTS(SELECT 1 
FROM process.rmt_revs 
WHERE rmt_revs.item_id =  pItemID_Copy_Too)) THEN

或者可能是您最初想要的:

IF EXISTS(SELECT 1 
FROM process.rmt_revs 
WHERE rmt_revs.item_id =  pItemID_Copy_Too) THEN

想法是在 IF

旁边设置布尔值