编辑:我已将更新的代码添加到我的帖子中,我错过了一个 aws ram get-resource-share-associations --association-type <blah> --query 'resourceShareAssociations[*].[resourceShareArn]' --output text |xargs -I {} aws ram accept-resource-share-invitation --resource-share-invitation-arn {}
我的IF块之外
我有一个表return null
,其中包含最新数据,并且希望添加一个对其进行更新的触发器,以便可以将对特定列所做的更改记录在另一个表working
中。我运行此代码来创建触发函数并对其进行测试,但出现错误
history
我的代码:
SQL Error [2F005]: ERROR: control reached end of trigger procedure without RETURN
Where: PL/pgSQL function update_history()
答案 0 :(得分:2)
不满足条件时,您的函数无法到达RETURN
语句。将语句放在IF
块外面。返回的值将被忽略,您可以使用NULL
代替NEW
。
CREATE FUNCTION update_history ()
RETURNS TRIGGER
AS $$
BEGIN
IF NEW.discipline <> OLD.discipline THEN
INSERT INTO history (ShiftId, fieldName, OldValue, NewValue)
VALUES(NEW.shift_id, 'discipline', OLD.discipline, NEW.discipline);
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
总是会忽略行级触发器AFTER触发后或语句级触发器BEFORE或AFTER触发的返回值;它也可能为空。