【问题标题】:Update timestamp on related referenced row on update or insert在更新或插入时更新相关引用行的时间戳
【发布时间】:2014-04-23 17:53:44
【问题描述】:

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

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

如果不能普遍回答这个问题,我会对 Postgres 和 Oracle 的具体解决方案感兴趣。

【问题讨论】:

    标签: sql oracle postgresql


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 2010-11-05
      • 2013-06-11
      • 1970-01-01
      • 2014-07-10
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多