当前位置: 首页 > 面试题库 >

在Postgres 9中触发更新当前日期

微生善
2023-03-14
问题内容

我有两个叫sale和的表customer。我想创建一个触发器,更新列last_purchasecustomer在每个新的插入表sale的表。

表客户:customer_id,名称,last_sale,…
表销售额:sale_id,customer_id,日期,…

CREATE TRIGGER update_last_sale BEFORE INSERT ON sale FOR EACH ROW EXECUTE...

我已经开始写作,但我不知道该怎么做。
有人可以帮我吗?


问题答案:
CREATE FUNCTION update_customer_last_sale() RETURNS TRIGGER AS $$
BEGIN
    UPDATE customer SET last_sale=now() WHERE cutomer_id=NEW.customer_id;
    RETURN NEW;
END; $$
LANGUAGE plpgsql;

然后

CREATE TRIGGER update_last_sale
BEFORE INSERT ON sale
FOR EACH ROW EXECUTE update_customer_last_sale;

NEW是即将在销售表中插入的行。(对于更新行,将NEW取决于该行在更新之后的外观,以及OLD该行在更新之前的外观)。



 类似资料:
  • 问题内容: 有没有一种方法实际上可以获取已更新的列名,以便在触发器中使用它? 基本上,我试图在用户插入或更新表时进行审核跟踪(在这种情况下,它与Contact表有关) 如何获取已更新的列的名称,并从中获取该列的和值。如果一行中甚至多行中更新了多列,是否可以对每次更新进行审核? 问题答案: 只需对每列使用OLD.colname <> NEW.colname即可检查并查找不同的列。触发器在MySQL中

  • 问题内容: 仅在真正更改数据的情况下,才有可能使用“更新后”触发器。我知道“新旧”。但是使用它们时,我只能比较列。例如“ NEW.count <> OLD.count”。 但我想要类似的东西:如果“ NEW <> OLD”,则运行触发器 一个例子: 关键是,有一个更新,但是 什么都没有改变 。但是无论如何,触发器都在运行。恕我直言,应该有一个没有的方法。 我知道我可以使用 如果现在b <> OLD

  • userNotesTable: 用户提醒表: 插入触发器: 更新触发器: 这是数据库的当前代码,以及提醒表的特定触发器。我遇到的困难是,从提醒表中的specific中的user notes表中选择特定的名称和额外的内容,所有这些都在更新触发器中。 插入时,和会被插入到提醒和搜索表中,但我希望能够使用特定名称和用户注释表中的额外内容更新搜索表,这可能吗?

  • 问题内容: 在同一张表上更新后,如何在触发器中更新表的列? 这是触发条件: 现在当我像这样更新表时 这不起作用,因为我得到以下信息: 那么我到底该如何工作呢? 问题答案: 如果将触发器更改为而不是,可以这样操作:

  • 当我收到短信时,我正在使用IFTTT更新我的谷歌表格。现在,我想提前一步,写一个谷歌应用脚本,它可以用IFTTT更新的数据做不同的事情。我试图使用Google Apps Script的函数来实现同样的功能,但这不起作用。关于这个问题,我在多个论坛上做了很多搜索,我了解到只有当“用户”对谷歌表格进行更改时才有效,而不是在应用编程接口请求中进行更改时(我相信IFTTT使用相同)。我甚至看不到一个有工作

  • 问题内容: 我有一个postgres数据库,其中包含几个要监视其更新的表,并且如果有任何更新,则要触发“嘿,某些更改”更新。这在基本情况下有效,但是现在是时候进行改进了。 效果很好。我将其附着在桌子上,如下所示: (作为一个附带的问题:如果有比触发函数中的mess’o’$$更好/更容易的方法来对触发结果进行json.stringify的字符串化,请让我知道。平衡引号并不有趣)。 我要执行的操作是将