插入表后如何获取更新,创建或失败的数据?

时间:2019-04-23 15:04:24

标签: python postgresql sqlalchemy

我有很多对象需要插入表中。插入后,可能有三个选项:创建,更新和失败。看起来像upsert,但我需要详细的结果。 我尝试使用on_conflict_do_update,但后来我无法确定哪些更新,创建和失败了。 我真的不想使用迭代来处理异常块中的每个项目,也许您会有一些选择?

1 个答案:

答案 0 :(得分:0)

您要如何处理这些信息?一种方法是使用Postgres触发器,该触发器在插入或更新行时执行特定的操作。定义一个在插入或更新表之前执行函数的触发器。处理要在触发功能中创建/更新的数据要执行的操作。

CREATE FUNCTION handle_modify() RETURNS trigger AS $modify$
   BEGIN
      IF TG_OP='INSERT' THEN
         --do something with created data NEW.data
      END IF;
      IF TG_OP='UPDATE' THEN
         --do something with updated data NEW.data or OLD.data
      END IF;

   END
$modify$ LANGUAGE plpgsql;

CREATE TRIGGER modify AFTER INSERT OR UPDATE ON your_table
    FOR EACH ROW EXECUTE PROCEDURE modify();