【问题标题】:Update just fields I set on update clause using triggers and functions使用触发器和函数仅更新我在更新子句中设置的字段
【发布时间】:2016-01-03 13:19:01
【问题描述】:

我有一个与视图上的触发器相关联的函数。视图链接到“my_table”和其他表。我想通过该功能更新该表。我有 4 个字段。但是如果我只更新一个字段,例如contact_name,又会怎样。我怎样才能把那个字段放在 SET 语句上,而不是下面例子中的 4 个字段:

CREATE OR REPLACE FUNCTION my_function()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $function$
BEGIN
    UPDATE my_table
                SET
                    identifier = NEW.identifier,
                    contact_name = NEW.contact_name,
                    contact_phone_number = NEW.contact_phone_number,
                    repair_date = NEW.repair_date,
                WHERE id=OLD.id;
            RETURN NEW;
END

【问题讨论】:

    标签: postgresql triggers sql-update sql-view


    【解决方案1】:

    您需要为此使用动态 SQL。但这没关系。如果您更新一个表,所有1 的字段都会被数据库复制到新行中,即使您没有明确指定它们也是如此。

    因此,除非您还可能在其他地方单独更新这些字段并且不想覆盖它们的新值,否则只需将它们全部设置好,不要担心。


    1好吧,除了在 TOAST 表中外联存储的未更改字段

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多