================= RELEASE SAVEPOINT ================= .. container:: refentry :name: SQL-RELEASE-SAVEPOINT .. container:: titlepage .. container:: refnamediv .. rubric:: RELEASE SAVEPOINT :name: release-savepoint RELEASE SAVEPOINT — 销毁一个之前定义的保存点 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis RELEASE [ SAVEPOINT ] savepoint_name .. container:: refsect1 :name: id-1.9.3.163.6 .. rubric:: 描述 :name: 描述 ``RELEASE SAVEPOINT``\ 销毁在当前事务 中之前定义的一个保存点。 销毁一个保存点会使得它不能再作为一个回滚点,但是它没有其他用户 可见的行为。它不会撤销在该保存点被建立之后执行的命令的效果(要 这样做,可见\ `ROLLBACK TO SAVEPOINT `__\ )。当不再需要一个 保存点时销毁它允许系统在事务结束之前回收一些资源。 ``RELEASE SAVEPOINT``\ 也会销毁所有 在该保存点建立之后建立的保存点。 .. container:: refsect1 :name: id-1.9.3.163.7 .. rubric:: 参数 :name: 参数 .. container:: variablelist *``savepoint_name``* 要销毁的保存点的名称。 .. container:: refsect1 :name: id-1.9.3.163.8 .. rubric:: 注解 :name: 注解 指定一个不是之前定义的保存点名称是错误。 当事务处于中止状态时不能释放保存点。 如果多个保存点具有相同的名称,只有最近被定义的那个会被释放。 .. container:: refsect1 :name: id-1.9.3.163.9 .. rubric:: 示例 :name: 示例 建立并且销毁一个保存点: .. code:: programlisting BEGIN; INSERT INTO table1 VALUES (3); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (4); RELEASE SAVEPOINT my_savepoint; COMMIT; 上述事务将插入 3 和 4。 .. container:: refsect1 :name: id-1.9.3.163.10 .. rubric:: 兼容性 :name: 兼容性 这个命令符合SQL标准。该标准指定关键词 ``SAVEPOINT``\ 是强制需要的,但 PostgreSQL允许省略。 .. container:: refsect1 :name: id-1.9.3.163.11 .. rubric:: 另见 :name: 另见 `BEGIN `__, `COMMIT `__, `ROLLBACK `__, `ROLLBACK TO SAVEPOINT `__, `SAVEPOINT `__