如果与上次插入的值不同,Postgres触发器仅插入

时间:2014-01-29 11:04:43

标签: sql database postgresql triggers

我正在使用外部API来发送每日请求,并每天询问产品特性。我得到价格,数量,描述。这组属性我登录Postgres表,每个请求:

product_data (id, productId, productQty, productDescr);

价格和数量每天都会修改,因此我需要始终将它们插入到数据库中,但描述会每隔几周修改一次,所以我只想插入,如果它与上次记录的描述不同。 为此,我想创建一个触发器,在插入描述时,将检查它是否与该productId的最后插入描述不同,如果不是,则只插入null。如果不同则插入新描述。

这可能吗?有人可以提供一些关于如何继续开发此类触发器的提示吗?

1 个答案:

答案 0 :(得分:0)

在触发器中,您可以通过OLD和NEW访问当前记录和新数据,因此在您的触发器中,您应该能够使用以下内容来决定插入内容:

INSERT INTO table (field) 
VALUES 
(CASE WHEN OLD.description<>NEW.description THEN new.description ELSE NULL END);

但是,无论是故意还是通过错误,您都可以不再检测何时实际删除了描述; NULL可以是不变的值或实际的NULL值的结果。