这是我想要实现的:
CREATE FUNCTION f() RETURNS trigger AS $$
BEGIN
SELECT COUNT(*) AS total_num, SUM(width) AS total_width
FROM some_table WHERE foo = NEW.foo;
IF total_num > 0 AND total_width > 100
THEN
RAISE EXCEPTION 'this is bad';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
但它在语法上还不正确。
我读过我首先需要DECLARE
变量(在本例中为total_num
和total_width
)所以我可以使用它们并使用SELECT INTO
但我见过只有一个变量/SELECT
语句的示例。如果我有更多呢?
最佳答案
你可以列出multiple variables在 into
部分。和 declare
section需要在第一个 begin
之前出现:
CREATE FUNCTION f() RETURNS trigger
AS $$
declare
total_num bigint;
total_width bigint;
BEGIN
SELECT COUNT(*), SUM(width)
into total_num, total_width
FROM some_table
WHERE foo = NEW.foo;
IF total_num > 0 AND total_width > 100 THEN
RAISE EXCEPTION 'this is bad';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
关于postgresql - 如何在触发器函数中选择多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119068/