我创建了一个People表,其中包含People表的所有信息,如姓名,姓氏,性别,出生日期和电子邮件。此表中的每一行都有一个序列peopleID。我正在尝试创建存储过程并触发自动计算刚刚输入的人的年龄。我正在尝试使用currval来获取最后插入的peopleID。在postgreSQL中使用currval计算年龄
这是我的存储过程:
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’));
这是我得到的错误,当我尝试用一个INSERT语句来实现它:
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
+0
与参数触发功能?.. –
+0
我觉得我有点困惑,我这里需要特定元素。我对触发器相当陌生。 –
+0
肯定的事情。我拿起文档供你阅读 - 看看我的回答 –