Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > a866202fe868538f89a755dbcabc378b > files > 724

postgresql8.2-docs-8.2.14-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>SAVEPOINT</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 8.2.14 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="SQL Commands"
HREF="sql-commands.html"><LINK
REL="PREVIOUS"
TITLE="ROLLBACK TO SAVEPOINT"
HREF="sql-rollback-to.html"><LINK
REL="NEXT"
TITLE="SELECT"
HREF="sql-select.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2009-09-04T05:25:47"></HEAD
><BODY
CLASS="REFENTRY"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
>PostgreSQL 8.2.14 Documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="sql-rollback-to.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="sql-rollback-to.html"
>Fast Backward</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="top"
><A
HREF="sql-select.html"
>Fast Forward</A
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="top"
><A
HREF="sql-select.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SQL-SAVEPOINT"
></A
>SAVEPOINT</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN53560"
></A
><H2
>Name</H2
>SAVEPOINT&nbsp;--&nbsp;define a new savepoint within the current transaction</DIV
><A
NAME="AEN53563"
></A
><A
NAME="AEN53565"
></A
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN53568"
></A
><H2
>Synopsis</H2
><PRE
CLASS="SYNOPSIS"
>SAVEPOINT <TT
CLASS="REPLACEABLE"
><I
>savepoint_name</I
></TT
></PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53571"
></A
><H2
>Description</H2
><P
>   <TT
CLASS="COMMAND"
>SAVEPOINT</TT
> establishes a new savepoint within
   the current transaction.
  </P
><P
>   A savepoint is a special mark inside a transaction that allows all commands
   that are executed after it was established to be rolled back, restoring
   the transaction state to what it was at the time of the savepoint.
  </P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53576"
></A
><H2
>Parameters</H2
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><TT
CLASS="REPLACEABLE"
><I
>savepoint_name</I
></TT
></DT
><DD
><P
>      The name to give to the new savepoint.
     </P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53584"
></A
><H2
>Notes</H2
><P
>   Use <A
HREF="sql-rollback-to.html"
><I
>ROLLBACK TO SAVEPOINT</I
></A
> to
   rollback to a savepoint.  Use <A
HREF="sql-release-savepoint.html"
><I
>RELEASE SAVEPOINT</I
></A
> to destroy a savepoint, keeping
   the effects of commands executed after it was established.
  </P
><P
>   Savepoints can only be established when inside a transaction block.
   There can be multiple savepoints defined within a transaction.
  </P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53590"
></A
><H2
>Examples</H2
><P
>   To establish a savepoint and later undo the effects of all commands executed
   after it was established:
</P><PRE
CLASS="PROGRAMLISTING"
>BEGIN;
    INSERT INTO table1 VALUES (1);
    SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (2);
    ROLLBACK TO SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (3);
COMMIT;</PRE
><P>
   The above transaction will insert the values 1 and 3, but not 2.
  </P
><P
>   To establish and later destroy a savepoint:
</P><PRE
CLASS="PROGRAMLISTING"
>BEGIN;
    INSERT INTO table1 VALUES (3);
    SAVEPOINT my_savepoint;
    INSERT INTO table1 VALUES (4);
    RELEASE SAVEPOINT my_savepoint;
COMMIT;</PRE
><P>
   The above transaction will insert both 3 and 4.
  </P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53596"
></A
><H2
>Compatibility</H2
><P
>   SQL requires a savepoint to be destroyed automatically when another
   savepoint with the same name is established.  In
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>, the old savepoint is kept, though only the more
   recent one will be used when rolling back or releasing.  (Releasing the
   newer savepoint will cause the older one to again become accessible to
   <TT
CLASS="COMMAND"
>ROLLBACK TO SAVEPOINT</TT
> and <TT
CLASS="COMMAND"
>RELEASE SAVEPOINT</TT
>.)
   Otherwise, <TT
CLASS="COMMAND"
>SAVEPOINT</TT
> is fully SQL conforming.
  </P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN53603"
></A
><H2
>See Also</H2
><A
HREF="sql-begin.html"
><I
>BEGIN</I
></A
>, <A
HREF="sql-commit.html"
><I
>COMMIT</I
></A
>, <A
HREF="sql-release-savepoint.html"
><I
>RELEASE SAVEPOINT</I
></A
>, <A
HREF="sql-rollback.html"
><I
>ROLLBACK</I
></A
>, <A
HREF="sql-rollback-to.html"
><I
>ROLLBACK TO SAVEPOINT</I
></A
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="sql-rollback-to.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="sql-select.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>ROLLBACK TO SAVEPOINT</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="sql-commands.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>SELECT</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>