SQL Error [42704]: ERROR: large object xxxxxxx does not exist

SQL Error [42704]: ERROR: large object xxxxxxx does not exist

我有一个 table 的大对象。 当我想删除一行时。我有一个错误:SQL 错误 [42704]:

ERROR: large object 123456 does not exist.

我签入了 pg_largeobject,但没有找到 id = '123456' 的行。

如何删除包含不存在对象的行?

table 上的触发器是

CREATE TRIGGER t_filledreport BEFORE UPDATE OR DELETE ON rep_reportjob
   FOR EACH ROW EXECUTE PROCEDURE lo_manage(filledreport);

有两种选择:

  • 暂时禁用触发器:

    ALTER TABLE rep_reportjob DISABLE TRIGGER t_filledreport;
    DELETE ...;
    ALTER TABLE rep_reportjob ENABLE TRIGGER t_filledreport;
    
  • 作为超级用户,暂时将session_replication_role设置为replica:

    BEGIN;
    SET LOCAL session_replication_role = replica;
    DELETE ...;
    COMMIT;
    

注意!禁用触发器后,您可以轻松引入不一致!