【发布时间】:2014-06-06 07:20:31
【问题描述】:
所以我正在努力为我的应用服务器的数据库添加最后更新时间。这个想法是,它将记录更新应用到我们的一次旅行的时间,然后应用程序可以发送一个获取请求来确定它是否获得了所有正确的最新信息。
我已将该列添加到我们的表中,并为其提供服务,最后设法获得一个触发器,以在每次对其行程表中的行程进行更改时更新该列。我现在的问题来自这样一个事实,即与旅行有关的信息也存储在许多其他表格中(例如,有组成旅行的路线表格和用户可以在旅行等...),如果任何数据发生变化,那么旅行的更新时间也需要改变。我一生都想不出如何设置触发器,以便当我更改某些路线信息时,路线所属行程的最后更新时间将在其表中更新。
这是我现在的触发代码:当行程表的行更新时,它会更新行程表的最后更新列。
CREATE OR REPLACE FUNCTION record_update_time() RETURNS TRIGGER AS
$$
BEGIN
NEW.last_updated=now();
RETURN NEW;
END;
$$
LANGUAGE PLPGSQL;
CREATE TRIGGER update_entry_on_entry_change
BEFORE UPDATE ON mydatabase.trip FOR EACH ROW
EXECUTE PROCEDURE record_update_time();
--I used the next two queries just to test that the trigger works. It
--probably doesn't make a difference to you but I'll keep it here for reference
UPDATE mydatabase.trip
SET title='Sample New Title'
WHERE id = 2;
SELECT *
FROM mydatabase.trip
WHERE mydatabase.trip.id < 5;
现在,当使用外键引用行程行的行更新时,我需要它进行更新。比我更有经验的 SQL 触发器有什么想法吗?
【问题讨论】:
标签: postgresql triggers