触发以防止UPDATE并将其转换为INSERT

时间:2019-07-15 13:31:32

标签: postgresql database-trigger

我有一个可以附加到其他实体的实体。 我想防止对此进行任何更新,而是可以有新条目。 这样,我可以保持现有链接不变,并添加新条目

有一个状态列(有效/无效) 发出更新时,我只希望将行的状态更新为不活动。 然后将更新的值作为新行插入。 如果可以通过通用的方式完成此操作(该方法适用于所有表),我们将只需要添加调用函数的触发器即可。

类似

create  trigger prevent_update_trigger
   before update on the_table
   for each row execute procedure prevent_update_do_insert();

create or replace function prevent_update_do_insert() 
returns trigger as 
$$ 
begin 

    // Code to update it to INACTIVE

    -- Insert the UPDATE row as new row

    // Code to INSERT new row

    -- do NOT proceed with original UPDATE
    return null;
end;
$$ 
language plpgsql;

0 个答案:

没有答案