DISCARD用于释放与一个数据库会话相关的内部资源。

简介

DISCARD释放与一个数据库会话相关的内部资源。 这个命令有助于部分或者完全重置该会话的状态。有几个子命令来释放不同类型的资源。DISCARD ALL变体把所有其他形式都包含在内,并且还会重置额外的状态。

语法

    DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }

参数

  • PLANS释放所有已缓存的查询计划,强制在下一次使用相关预备语句时重新做计划。

  • SEQUENCES丢弃所有已缓存的序列相关的状态,包括 currval()/lastval()信息以及任何还未被nextval()返回的预分配的序列值(预分配序列值的描述请见 CREATE SEQUENCE);

  • TEMPORARY or TEMP删除当前会话中创建的所有临时表。

  • ALL释放与当前会话相关的所有临时资源并且把会话重置为初始状态。 当前这和执行以下语句序列的效果相同:

    SET SESSION AUTHORIZATION DEFAULT;
    RESET ALL;
    DEALLOCATE ALL;
    CLOSE ALL;
    UNLISTEN *;
    SELECT pg_advisory_unlock_all();
    DISCARD PLANS;
    DISCARD SEQUENCES;
    DISCARD TEMP;

注意事项

DISCARD ALL不能在事务块内执行。