更新或插入时更新相关引用行的时间戳

时间:2014-04-23 09:09:51

标签: sql oracle postgresql

当模型Foo与另一个模型Bar属于一个关系时,Ruby On Rails有a neat feature条:无论何时创建或更新Foo,都会更新引用条上的时间戳字段。问题是,该功能在Rails层中实现,因此仅在Rails应用程序插入或更新行时才有效。在一个假设的情况下,几个应用程序共享同一个数据库,它将无法工作,除非所有应用程序中都存在类似的机制。

问题是:如何在数据库层中实现相同的功能?是否有一些咒语与触发器和/或外键有关?

如果问题无法得到普遍回答,我会对Postgres和Oracle的具体解决方案感兴趣。

1 个答案:

答案 0 :(得分:1)

假设您有表Foo和Bar,您可以在INSERT AND UPDATE事件上为表Foo创建触发器,并在此触发器内更新Bar表。对于Oracle,它将是这样的:

CREATE or REPLACE TRIGGER foo_trigger
  AFTER INSERT OR UPDATE ON foo
BEGIN
 UPDATE bar SET timestamp_field=some_value;
END;