我有一个表(Id,FK,Date1,Date2),我需要创建一个返回布尔值的函数。一般来说,我想选择与给定 FK 匹配的记录并检查一些附加语句。如果选择语句返回 0 行,我想返回 true,否则返回 false。我已经写了这段代码:
CREATE FUNCTION isAlreadyTaken(FK INT4, Date1 DATE, Date2 DATE)
RETURNS BOOLEAN
AS $$
BEGIN
CREATE TEMP TABLE helper ON COMMIT DROP AS SELECT COUNT(table.FK) AS quant
FROM table
WHERE table.FK = FK AND table.Date2 IS NULL;
SELECT CASE
WHEN helper.quant > 0
THEN FALSE
ELSE TRUE
END;
END
$$ LANGUAGE plpgsql;
代码正在编译,可以执行。但是当我在 CHECK 语句中调用该函数时,它返回一个错误 [42P01]。解决方案是否接近实际工作的解决方案,或者我完全迷失了方向?