======= DISCARD ======= .. container:: refentry :name: SQL-DISCARD .. container:: titlepage .. container:: refnamediv .. rubric:: DISCARD :name: discard DISCARD — 抛弃会话状态 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP } .. container:: refsect1 :name: id-1.9.3.101.5 .. rubric:: 描述 :name: 描述 ``DISCARD``\ 释放与一个数据库会话相关的内部资源。 这个命令有助于部分或者完全重置该会话的状态。有几个子命令来 释放不同类型的资源。\ ``DISCARD ALL``\ 变体把所有 其他形式都包含在内,并且还会重置额外的状态。 .. container:: refsect1 :name: id-1.9.3.101.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``PLANS`` 释放所有已缓存的查询计划,强制在下一次使用相关预备语句时 重新做计划。 ``SEQUENCES`` 丢弃所有已缓存的序列相关的状态,包括 ``currval()``/``lastval()``\ 信息 以及任何还未被\ ``nextval()``\ 返回的预分配的 序列值(预分配序列值的描述请见 `CREATE SEQUENCE `__\ ); ``TEMPORARY`` or ``TEMP`` 删除当前会话中创建的所有临时表。 ``ALL`` 释放与当前会话相关的所有临时资源并且把会话重置为初始状态。 当前这和执行以下语句序列的效果相同: .. code:: programlisting SET SESSION AUTHORIZATION DEFAULT; RESET ALL; DEALLOCATE ALL; CLOSE ALL; UNLISTEN *; SELECT pg_advisory_unlock_all(); DISCARD PLANS; DISCARD SEQUENCES; DISCARD TEMP; .. container:: refsect1 :name: id-1.9.3.101.7 .. rubric:: 注解 :name: 注解 ``DISCARD ALL``\ 不能在事务块内执行。 .. container:: refsect1 :name: id-1.9.3.101.8 .. rubric:: 兼容性 :name: 兼容性 ``DISCARD``\ 是一种 PostgreSQL扩展。