Postgres-在插入之前触发以擦除表的所有内容

我有一个约有2万行的表,每天有另外2万行。 事实证明,我将不再需要前一天的2万行。因此,我需要创建一个简单的触发器来在插入之前擦除所有表内容。

我尝试过:

--FUNCTION:
CREATE FUNCTION delete_old_rows_gmc() RETURNS trigger
    LANGUAGE plpgsql
    AS $$
BEGIN
  DELETE FROM gmc;
  RETURN NULL;
END;
$$;

--TRIGGER:
CREATE TRIGGER trigger_delete_old_rows_gmc
    BEFORE INSERT ON gmc
    EXECUTE PROCEDURE delete_old_rows_gmc();

但是插入之后,表中只有22行,而不是带来2万行。

aabeau 回答:Postgres-在插入之前触发以擦除表的所有内容

您可能不会使用单个INSERT语句插入所有20000行,而是插入多个语句。现在,这些触发器中的每一个都将触发并删除之前添加的INSERT中的所有内容,因此最后的INSERT中只有22行。

我认为使用触发器来执行此操作不是一个好主意。而是显式地运行

TRUNCATE gmc;

开始加载之前。

本文链接:https://www.f2er.com/2970600.html

大家都在问