DISCARD

丢弃会话状态。

概要

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

描述

DISCARD 命令用于释放与数据库会话相关的内部资源。该命令可用于部分或完全重置会话状态。存在若干子命令用于释放不同类型的资源;DISCARD ALL 变体涵盖所有其他子命令,同时还会重置额外的状态。

数据库不支持在事务中调用DISCARD ALL。

参数

  • PLANS
    • 释放所有缓存的查询计划,强制在下次使用相关预编译语句时重新进行计划。
  • SEQUENCES
    • 丢弃所有缓存的序列相关状态,包括尚未通过 nextval() 返回的任何预分配序列值。(有关预分配序列值的说明,请参阅 CREATE SEQUENCE。)
  • TEMPORARY/TEMP
    • 删除当前会话中创建的所有临时表。
  • ALL
    • 释放当前会话关联的所有临时资源,并将会话重置为初始状态。目前,此操作的效果等同于执行以下语句序列:
      CLOSE ALL;
      SET SESSION AUTHORIZATION DEFAULT;
      RESET ALL;
      DEALLOCATE ALL;
      UNLISTEN *;
      SELECT pg_advisory_unlock_all();
      DISCARD PLANS;
      DISCARD SEQUENCES;
      DISCARD TEMP;

      注意

      DISCARD ALL 无法在事务块内执行。

兼容性

DISCARD 是一个数据库扩展。