我有两个相关的表。让我们调用它们event_types
并occurrences
使用以下列:
event_types
-------------
id VARCHAR(30)
name VARCHAR(50)
first_event Timestamp
和
occurrences
-------------
id VARCHAR(30)
event_type_id VARCHAR(30)
timestamp Timestamp
postal_number Integer
city VARCHAR(50)
street VARCHAR(50)
我想添加一个触发器来更新first_event
以防万一新occurrence
的timestamp
.
用例:原因是我需要event_type
经常使用条件查询此表first_event
并按此字段对其进行排序以获取时间范围内的表。
我尝试过这样的事情:
CREATE OR REPLACE FUNCTION set_to_minimum_time() RETURNS TRIGGER AS
$$
BEGIN
IF NEW.timestamp < SELECT first_event from event_types where id=NEW.event_type_id THEN
UPDATE event_types
SET first_event = NEW.timestamp
WHERE id = NEW.event_type_id
END IF
END;
$$
LANGUAGE PLPGSQL;
CREATE TRIGGER after_trigger_time_updater
AFTER INSERT OR UPDATE OR DELETE
ON occurrences
FOR EACH ROW
EXECUTE PROCEDURE set_to_minimum_time();
由于 if 子句中的 select 语句存在语法错误,这已经失败。那么如何通过触发器实现这样的更新呢?
我正在使用 Postgres > 9.5 和 10。
进一步说明:此类事件更新不会经常出现。