我创建了一个带有 People 表的数据库,其中包含人们的所有信息,例如他们的名字、姓氏、性别、出生日期和电子邮件。此表中的每一行都有一个连续的 peopleID。我正在尝试创建一个存储过程和触发器来自动计算刚刚输入的人的年龄。我正在尝试使用 currval 来获取最后插入的 peopleID。
这是我的存储过程:
CREATE OR REPLACE FUNCTION PersonAge (peopleID INT)
RETURNS INTERVAL AS
$$
DECLARE
birthday date := (SELECT People.dateOfBirth
FROM People
);
BEGIN
RETURN age(birthday);
END;
$$
LANGUAGE plpgsql
这是我的触发器:
CREATE TRIGGER CalculateAge
AFTER INSERT OR UPDATE ON People
FOR EACH ROW
EXECUTE PROCEDURE PersonAge( SELECT currval(‘people_id_seq’));
这是我尝试使用插入语句实现它时遇到的错误:
ERROR: syntax error at or near "currval"
LINE 5: EXECUTE PROCEDURE PersonAge( SELECT currval('people_id_seq')...
^
********** Error **********
ERROR: syntax error at or near "currval"
SQL state: 42601
Character: 116