如果记录存在则创建函数然后什么都不做 运行 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
旁边设置布尔值
我需要 运行 一个可以 运行 一堆 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
旁边设置布尔值