⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lang_savepoint.html

📁 sqlite3源码,适合作为嵌入式(embedded)
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>SQLite Query Language: SAVEPOINT</title><style type="text/css">body {    margin: auto;    font-family: "Verdana" "sans-serif";    padding: 8px 1%;}a { color: #45735f }a:visited { color: #734559 }.logo { position:absolute; margin:3px; }.tagline {  float:right;  text-align:right;  font-style:italic;  width:240px;  margin:12px;  margin-top:58px;}.toolbar {  font-variant: small-caps;  text-align: center;  line-height: 1.6em;  margin: 0;  padding:1px 8px;}.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }.toolbar a:visited { color: white; }.toolbar a:hover { color: #80a796; background: white; }.content    { margin: 5%; }.content dt { font-weight:bold; }.content dd { margin-bottom: 25px; margin-left:20%; }.content ul { padding:0px; padding-left: 15px; margin:0px; }/* rounded corners */.se  { background: url(images/se.png) 100% 100% no-repeat #80a796}.sw  { background: url(images/sw.png) 0% 100% no-repeat }.ne  { background: url(images/ne.png) 100% 0% no-repeat }.nw  { background: url(images/nw.png) 0% 0% no-repeat }</style><meta http-equiv="content-type" content="text/html; charset=UTF-8">  </head><body><div><!-- container div to satisfy validator --><a href="index.html"><img class="logo" src="images/SQLite.gif" alt="SQLite Logo" border="0"></a><div><!-- IE hack to prevent disappearing logo--></div><div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div><table width=100% style="clear:both"><tr><td>  <div class="se"><div class="sw"><div class="ne"><div class="nw">  <div class="toolbar">    <a href="about.html">About</a>    <a href="sitemap.html">Sitemap</a>    <a href="docs.html">Documentation</a>    <a href="download.html">Download</a>    <a href="copyright.html">License</a>    <a href="news.html">News</a>    <a href="http://www.sqlite.org/cvstrac/index">Developers</a>    <a href="support.html">Support</a>  </div></div></div></div></div></td></tr></table>  <a href="lang.html">           <h2 align="center">SQL As Understood By SQLite</h2></a><h1>SAVEPOINT</h1><h4><a href="syntaxdiagrams.html#savepoint-stmt">savepoint-stmt:</a></h4><blockquote> <img src="images/syntax/savepoint-stmt.gif"></img> </blockquote><h4><a href="syntaxdiagrams.html#release-stmt">release-stmt:</a></h4><blockquote> <img src="images/syntax/release-stmt.gif"></img> </blockquote><h4><a href="syntaxdiagrams.html#rollback-stmt">rollback-stmt:</a></h4><blockquote> <img src="images/syntax/rollback-stmt.gif"></img> </blockquote><p>SAVEPOINTs are a method of creating transactions, similar to<a href="lang_transaction.html">BEGIN</a> and <a href="lang_transaction.html">COMMIT</a>, except that the SAVEPOINT and RELEASE commandsare named and may be nested.</p><p>The SAVEPOINT command starts a new transaction with a name.The transaction names need not be unique.A SAVEPOINT can be started either within or outside ofa <a href="lang_transaction.html">BEGIN</a>...<a href="lang_transaction.html">COMMIT</a>.  When a SAVEPOINT is the outer-most savepointand it is not within a <a href="lang_transaction.html">BEGIN</a>...<a href="lang_transaction.html">COMMIT</a> then the behavior is thesame as BEGIN DEFERRED TRANSACTION.</p><p>The ROLLBACK TO command reverts the state of the database back to whatit was just after the corresponding SAVEPOINT.  Note that unlike thatplain <a href="lang_transaction.html">ROLLBACK</a> command (without the TO keyword) the ROLLBACK TO commanddoes not cancel the transaction.  Instead of cancelling the transaction,the ROLLBACK TO command restarts the transaction again at the beginning.All intervening SAVEPOINTs are cancelled, however.</p><p>The RELEASE is like a <a href="lang_transaction.html">COMMIT</a> for a SAVEPOINT.The RELEASE command causes all savepoints back to and including the firstsavepoint with a matching name to be removed from the transaction stack.  TheRELEASE of an inner transactiondoes not cause any changes to the database file, it merelyremoves savepoints from the transaction stack such that it isno longer possible to ROLLBACK TO those savepoints.If a RELEASE command releases the outermost savepoint, sothat the transaction stack becomes empty, then RELEASE is the sameas <a href="lang_transaction.html">COMMIT</a>.The <a href="lang_transaction.html">COMMIT</a> command may used to release all savepoints andcommit the transaction even if the transaction was originally startedby a SAVEPOINT command instead of a <a href="lang_transaction.html">BEGIN</a> command.</p><p>If the savepoint-name in a RELEASE command does not match anysavepoint currently in the tranaction stack, then no savepoints arereleased, the database is unchanged, and the RELEASE command returnsan error.</p><p>Note that an inner transaction might commit (using the RELEASE command)but then later have its work undone by a ROLLBACK in an outer transaction.A power failure or program crash or OS crash will cause the outer-mosttransaction to rollback, undoing all changes that have occurred withinthat outer transaction, even changes that have supposedly been "committed"by the RELEASE command.  Content is not actually committed on the disk until the outermost transaction commits.</p><p>There are several ways of thinking about the RELEASE command:</p><ul><li><p>Some people view RELEASE as the equivalent of COMMIT for a SAVEPOINT.This is an acceptable point of view as long as one remembers that thechanges committed by an inner transaction might later be undone by arollback in an outer transaction.</p></li><li><p>Another view of RELEASE is that it merges a named transaction into itsparent transaction, so that the named transaction and its parent becomethe same transaction.  After RELEASE, the named transaction and its parentwill commit or rollback together, whatever their fate may be.</p></li><li><p>One can also think of savepoints as"marks" in the transaction timeline.  In this view, the SAVEPOINT commandcreates a new mark, the ROLLBACK TO command rewinds the timeline backto a point just after the named mark, and the RELEASE commanderases marks from the timeline without actually making anychanges to the database.</p></li></ul><h3>Transaction Nesting Rules</h3><p>Transactions stack.  The last transaction started will be the firsttransaction committed or rolled back.</p><p>The <a href="lang_transaction.html">BEGIN</a> command only works if the transaction stack is empty, orin other words if there are no pending transactions.  If the transactionstack is not empty when the <a href="lang_transaction.html">BEGIN</a> command is invoked, then the commandfails with an error.</p><p>The <a href="lang_transaction.html">COMMIT</a> command commits all outstanding transactions and leavesthe transaction stack empty.</p><p>The RELEASE command starts with the most recent addition to thetransaction stack and releases savepoints backwards in time until it releases a savepoint mark with a matching savepoint-name.Prior savepoints, even savepoints with matching savepoint-names, areunchanged.If the RELEASE command causes thetransaction stack to become empty (if the RELEASE command releases theoutermost transaction from the stack) then the transaction commits.</p><p>The <a href="lang_transaction.html">ROLLBACK</a> command without a TO clause rolls backs all transactionsand leaves the transaction stack empty.</p><p>The ROLLBACK command with a TO clause rolls back transactions goingbackwards in time back to the most recent SAVEPOINT with a matching name.The SAVEPOINT with the matching name remains on the transaction stack,but all database changes that occurred after that SAVEPOINT was createdare rolled back.  If the savepoint-name in a ROLLBACK TO command does notmatch any SAVEPOINT on the stack, then the ROLLBACK command fails with anerror and leaves the state of the database unchanged.</p><hr><small><i>This page last modified 2009/01/02 16:47:13 UTC</i></small></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -